package org.xtext.ic.dsl.parser.antlr.internal; 

import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import org.xtext.ic.dsl.services.IcDslGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings("all")
public class InternalIcDslParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_STRING", "RULE_INT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'package-prefix'", "'layer'", "'{'", "'}'", "'typedef'", "'mapsto'", "'.'", "'entity'", "'extends'", "'one'", "'many'", "'id'", "'auto-increment'", "'create-connection'", "'('", "'Type'", "'='", "','", "'Database'", "'User'", "'Password'", "'URL'", "'Port'", "'Pool-Size'", "')'", "'MySQL'", "'SQL Server'", "'Oracle'", "'base-dao'", "'create-dao'", "'on-layer'"
    };
    public static final int RULE_ID=4;
    public static final int T__40=40;
    public static final int T__41=41;
    public static final int T__29=29;
    public static final int T__28=28;
    public static final int T__27=27;
    public static final int T__26=26;
    public static final int T__25=25;
    public static final int T__24=24;
    public static final int T__23=23;
    public static final int T__22=22;
    public static final int RULE_ANY_OTHER=10;
    public static final int T__21=21;
    public static final int T__20=20;
    public static final int RULE_SL_COMMENT=8;
    public static final int EOF=-1;
    public static final int RULE_ML_COMMENT=7;
    public static final int T__30=30;
    public static final int T__19=19;
    public static final int T__31=31;
    public static final int RULE_STRING=5;
    public static final int T__32=32;
    public static final int T__33=33;
    public static final int T__16=16;
    public static final int T__34=34;
    public static final int T__15=15;
    public static final int T__35=35;
    public static final int T__18=18;
    public static final int T__36=36;
    public static final int T__17=17;
    public static final int T__37=37;
    public static final int T__12=12;
    public static final int T__38=38;
    public static final int T__11=11;
    public static final int T__39=39;
    public static final int T__14=14;
    public static final int T__13=13;
    public static final int RULE_INT=6;
    public static final int RULE_WS=9;

    // delegates
    // delegators


        public InternalIcDslParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalIcDslParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalIcDslParser.tokenNames; }
    public String getGrammarFileName() { return "../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g"; }



     	private IcDslGrammarAccess grammarAccess;
     	
        public InternalIcDslParser(TokenStream input, IcDslGrammarAccess grammarAccess) {
            this(input);
            this.grammarAccess = grammarAccess;
            registerRules(grammarAccess.getGrammar());
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "Model";	
       	}
       	
       	@Override
       	protected IcDslGrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}



    // $ANTLR start "entryRuleModel"
    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:67:1: entryRuleModel returns [EObject current=null] : iv_ruleModel= ruleModel EOF ;
    public final EObject entryRuleModel() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleModel = null;


        try {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:68:2: (iv_ruleModel= ruleModel EOF )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:69:2: iv_ruleModel= ruleModel EOF
            {
             newCompositeNode(grammarAccess.getModelRule()); 
            pushFollow(FOLLOW_ruleModel_in_entryRuleModel75);
            iv_ruleModel=ruleModel();

            state._fsp--;

             current =iv_ruleModel; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleModel85); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleModel"


    // $ANTLR start "ruleModel"
    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:76:1: ruleModel returns [EObject current=null] : ( ( (lv_package_0_0= rulePackagePrefix ) )? ( ( ( ( ({...}? => ( ({...}? => ( (lv_connection_2_0= ruleConnection ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_createdao_3_0= ruleCreateDAO ) ) ) ) ) )* ) ) ) ( (lv_types_4_0= ruleType ) )* ) ;
    public final EObject ruleModel() throws RecognitionException {
        EObject current = null;

        EObject lv_package_0_0 = null;

        EObject lv_connection_2_0 = null;

        EObject lv_createdao_3_0 = null;

        EObject lv_types_4_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:79:28: ( ( ( (lv_package_0_0= rulePackagePrefix ) )? ( ( ( ( ({...}? => ( ({...}? => ( (lv_connection_2_0= ruleConnection ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_createdao_3_0= ruleCreateDAO ) ) ) ) ) )* ) ) ) ( (lv_types_4_0= ruleType ) )* ) )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:80:1: ( ( (lv_package_0_0= rulePackagePrefix ) )? ( ( ( ( ({...}? => ( ({...}? => ( (lv_connection_2_0= ruleConnection ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_createdao_3_0= ruleCreateDAO ) ) ) ) ) )* ) ) ) ( (lv_types_4_0= ruleType ) )* )
            {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:80:1: ( ( (lv_package_0_0= rulePackagePrefix ) )? ( ( ( ( ({...}? => ( ({...}? => ( (lv_connection_2_0= ruleConnection ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_createdao_3_0= ruleCreateDAO ) ) ) ) ) )* ) ) ) ( (lv_types_4_0= ruleType ) )* )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:80:2: ( (lv_package_0_0= rulePackagePrefix ) )? ( ( ( ( ({...}? => ( ({...}? => ( (lv_connection_2_0= ruleConnection ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_createdao_3_0= ruleCreateDAO ) ) ) ) ) )* ) ) ) ( (lv_types_4_0= ruleType ) )*
            {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:80:2: ( (lv_package_0_0= rulePackagePrefix ) )?
            int alt1=2;
            int LA1_0 = input.LA(1);

            if ( (LA1_0==11) ) {
                alt1=1;
            }
            switch (alt1) {
                case 1 :
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:81:1: (lv_package_0_0= rulePackagePrefix )
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:81:1: (lv_package_0_0= rulePackagePrefix )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:82:3: lv_package_0_0= rulePackagePrefix
                    {
                     
                    	        newCompositeNode(grammarAccess.getModelAccess().getPackagePackagePrefixParserRuleCall_0_0()); 
                    	    
                    pushFollow(FOLLOW_rulePackagePrefix_in_ruleModel131);
                    lv_package_0_0=rulePackagePrefix();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getModelRule());
                    	        }
                           		set(
                           			current, 
                           			"package",
                            		lv_package_0_0, 
                            		"PackagePrefix");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }
                    break;

            }

            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:98:3: ( ( ( ( ({...}? => ( ({...}? => ( (lv_connection_2_0= ruleConnection ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_createdao_3_0= ruleCreateDAO ) ) ) ) ) )* ) ) )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:100:1: ( ( ( ({...}? => ( ({...}? => ( (lv_connection_2_0= ruleConnection ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_createdao_3_0= ruleCreateDAO ) ) ) ) ) )* ) )
            {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:100:1: ( ( ( ({...}? => ( ({...}? => ( (lv_connection_2_0= ruleConnection ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_createdao_3_0= ruleCreateDAO ) ) ) ) ) )* ) )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:101:2: ( ( ({...}? => ( ({...}? => ( (lv_connection_2_0= ruleConnection ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_createdao_3_0= ruleCreateDAO ) ) ) ) ) )* )
            {
             
            	  getUnorderedGroupHelper().enter(grammarAccess.getModelAccess().getUnorderedGroup_1());
            	
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:104:2: ( ( ({...}? => ( ({...}? => ( (lv_connection_2_0= ruleConnection ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_createdao_3_0= ruleCreateDAO ) ) ) ) ) )* )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:105:3: ( ({...}? => ( ({...}? => ( (lv_connection_2_0= ruleConnection ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_createdao_3_0= ruleCreateDAO ) ) ) ) ) )*
            {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:105:3: ( ({...}? => ( ({...}? => ( (lv_connection_2_0= ruleConnection ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_createdao_3_0= ruleCreateDAO ) ) ) ) ) )*
            loop2:
            do {
                int alt2=3;
                int LA2_0 = input.LA(1);

                if ( LA2_0 ==24 && getUnorderedGroupHelper().canSelect(grammarAccess.getModelAccess().getUnorderedGroup_1(), 0) ) {
                    alt2=1;
                }
                else if ( LA2_0 >=39 && LA2_0<=40 && getUnorderedGroupHelper().canSelect(grammarAccess.getModelAccess().getUnorderedGroup_1(), 1) ) {
                    alt2=2;
                }


                switch (alt2) {
            	case 1 :
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:107:4: ({...}? => ( ({...}? => ( (lv_connection_2_0= ruleConnection ) ) ) ) )
            	    {
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:107:4: ({...}? => ( ({...}? => ( (lv_connection_2_0= ruleConnection ) ) ) ) )
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:108:5: {...}? => ( ({...}? => ( (lv_connection_2_0= ruleConnection ) ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getModelAccess().getUnorderedGroup_1(), 0) ) {
            	        throw new FailedPredicateException(input, "ruleModel", "getUnorderedGroupHelper().canSelect(grammarAccess.getModelAccess().getUnorderedGroup_1(), 0)");
            	    }
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:108:102: ( ({...}? => ( (lv_connection_2_0= ruleConnection ) ) ) )
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:109:6: ({...}? => ( (lv_connection_2_0= ruleConnection ) ) )
            	    {
            	     
            	    	 				  getUnorderedGroupHelper().select(grammarAccess.getModelAccess().getUnorderedGroup_1(), 0);
            	    	 				
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:112:6: ({...}? => ( (lv_connection_2_0= ruleConnection ) ) )
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:112:7: {...}? => ( (lv_connection_2_0= ruleConnection ) )
            	    {
            	    if ( !((true)) ) {
            	        throw new FailedPredicateException(input, "ruleModel", "true");
            	    }
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:112:16: ( (lv_connection_2_0= ruleConnection ) )
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:113:1: (lv_connection_2_0= ruleConnection )
            	    {
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:113:1: (lv_connection_2_0= ruleConnection )
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:114:3: lv_connection_2_0= ruleConnection
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getModelAccess().getConnectionConnectionParserRuleCall_1_0_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleConnection_in_ruleModel198);
            	    lv_connection_2_0=ruleConnection();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getModelRule());
            	    	        }
            	           		set(
            	           			current, 
            	           			"connection",
            	            		lv_connection_2_0, 
            	            		"Connection");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }

            	     
            	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getModelAccess().getUnorderedGroup_1());
            	    	 				

            	    }


            	    }


            	    }
            	    break;
            	case 2 :
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:137:4: ({...}? => ( ({...}? => ( (lv_createdao_3_0= ruleCreateDAO ) ) ) ) )
            	    {
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:137:4: ({...}? => ( ({...}? => ( (lv_createdao_3_0= ruleCreateDAO ) ) ) ) )
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:138:5: {...}? => ( ({...}? => ( (lv_createdao_3_0= ruleCreateDAO ) ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getModelAccess().getUnorderedGroup_1(), 1) ) {
            	        throw new FailedPredicateException(input, "ruleModel", "getUnorderedGroupHelper().canSelect(grammarAccess.getModelAccess().getUnorderedGroup_1(), 1)");
            	    }
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:138:102: ( ({...}? => ( (lv_createdao_3_0= ruleCreateDAO ) ) ) )
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:139:6: ({...}? => ( (lv_createdao_3_0= ruleCreateDAO ) ) )
            	    {
            	     
            	    	 				  getUnorderedGroupHelper().select(grammarAccess.getModelAccess().getUnorderedGroup_1(), 1);
            	    	 				
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:142:6: ({...}? => ( (lv_createdao_3_0= ruleCreateDAO ) ) )
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:142:7: {...}? => ( (lv_createdao_3_0= ruleCreateDAO ) )
            	    {
            	    if ( !((true)) ) {
            	        throw new FailedPredicateException(input, "ruleModel", "true");
            	    }
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:142:16: ( (lv_createdao_3_0= ruleCreateDAO ) )
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:143:1: (lv_createdao_3_0= ruleCreateDAO )
            	    {
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:143:1: (lv_createdao_3_0= ruleCreateDAO )
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:144:3: lv_createdao_3_0= ruleCreateDAO
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getModelAccess().getCreatedaoCreateDAOParserRuleCall_1_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleCreateDAO_in_ruleModel273);
            	    lv_createdao_3_0=ruleCreateDAO();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getModelRule());
            	    	        }
            	           		set(
            	           			current, 
            	           			"createdao",
            	            		lv_createdao_3_0, 
            	            		"CreateDAO");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }

            	     
            	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getModelAccess().getUnorderedGroup_1());
            	    	 				

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop2;
                }
            } while (true);


            }


            }

             
            	  getUnorderedGroupHelper().leave(grammarAccess.getModelAccess().getUnorderedGroup_1());
            	

            }

            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:174:2: ( (lv_types_4_0= ruleType ) )*
            loop3:
            do {
                int alt3=2;
                int LA3_0 = input.LA(1);

                if ( (LA3_0==12||LA3_0==15||LA3_0==18) ) {
                    alt3=1;
                }


                switch (alt3) {
            	case 1 :
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:175:1: (lv_types_4_0= ruleType )
            	    {
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:175:1: (lv_types_4_0= ruleType )
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:176:3: lv_types_4_0= ruleType
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getModelAccess().getTypesTypeParserRuleCall_2_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleType_in_ruleModel334);
            	    lv_types_4_0=ruleType();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getModelRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"types",
            	            		lv_types_4_0, 
            	            		"Type");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop3;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleModel"


    // $ANTLR start "entryRulePackagePrefix"
    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:200:1: entryRulePackagePrefix returns [EObject current=null] : iv_rulePackagePrefix= rulePackagePrefix EOF ;
    public final EObject entryRulePackagePrefix() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePackagePrefix = null;


        try {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:201:2: (iv_rulePackagePrefix= rulePackagePrefix EOF )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:202:2: iv_rulePackagePrefix= rulePackagePrefix EOF
            {
             newCompositeNode(grammarAccess.getPackagePrefixRule()); 
            pushFollow(FOLLOW_rulePackagePrefix_in_entryRulePackagePrefix371);
            iv_rulePackagePrefix=rulePackagePrefix();

            state._fsp--;

             current =iv_rulePackagePrefix; 
            match(input,EOF,FOLLOW_EOF_in_entryRulePackagePrefix381); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePackagePrefix"


    // $ANTLR start "rulePackagePrefix"
    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:209:1: rulePackagePrefix returns [EObject current=null] : (otherlv_0= 'package-prefix' ( (lv_name_1_0= ruleJAVAID ) ) ) ;
    public final EObject rulePackagePrefix() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        AntlrDatatypeRuleToken lv_name_1_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:212:28: ( (otherlv_0= 'package-prefix' ( (lv_name_1_0= ruleJAVAID ) ) ) )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:213:1: (otherlv_0= 'package-prefix' ( (lv_name_1_0= ruleJAVAID ) ) )
            {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:213:1: (otherlv_0= 'package-prefix' ( (lv_name_1_0= ruleJAVAID ) ) )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:213:3: otherlv_0= 'package-prefix' ( (lv_name_1_0= ruleJAVAID ) )
            {
            otherlv_0=(Token)match(input,11,FOLLOW_11_in_rulePackagePrefix418); 

                	newLeafNode(otherlv_0, grammarAccess.getPackagePrefixAccess().getPackagePrefixKeyword_0());
                
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:217:1: ( (lv_name_1_0= ruleJAVAID ) )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:218:1: (lv_name_1_0= ruleJAVAID )
            {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:218:1: (lv_name_1_0= ruleJAVAID )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:219:3: lv_name_1_0= ruleJAVAID
            {
             
            	        newCompositeNode(grammarAccess.getPackagePrefixAccess().getNameJAVAIDParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleJAVAID_in_rulePackagePrefix439);
            lv_name_1_0=ruleJAVAID();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getPackagePrefixRule());
            	        }
                   		set(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"JAVAID");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePackagePrefix"


    // $ANTLR start "entryRuleType"
    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:243:1: entryRuleType returns [EObject current=null] : iv_ruleType= ruleType EOF ;
    public final EObject entryRuleType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleType = null;


        try {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:244:2: (iv_ruleType= ruleType EOF )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:245:2: iv_ruleType= ruleType EOF
            {
             newCompositeNode(grammarAccess.getTypeRule()); 
            pushFollow(FOLLOW_ruleType_in_entryRuleType475);
            iv_ruleType=ruleType();

            state._fsp--;

             current =iv_ruleType; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleType485); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleType"


    // $ANTLR start "ruleType"
    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:252:1: ruleType returns [EObject current=null] : (this_Layer_0= ruleLayer | this_TypeDef_1= ruleTypeDef | this_Entity_2= ruleEntity ) ;
    public final EObject ruleType() throws RecognitionException {
        EObject current = null;

        EObject this_Layer_0 = null;

        EObject this_TypeDef_1 = null;

        EObject this_Entity_2 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:255:28: ( (this_Layer_0= ruleLayer | this_TypeDef_1= ruleTypeDef | this_Entity_2= ruleEntity ) )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:256:1: (this_Layer_0= ruleLayer | this_TypeDef_1= ruleTypeDef | this_Entity_2= ruleEntity )
            {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:256:1: (this_Layer_0= ruleLayer | this_TypeDef_1= ruleTypeDef | this_Entity_2= ruleEntity )
            int alt4=3;
            switch ( input.LA(1) ) {
            case 12:
                {
                alt4=1;
                }
                break;
            case 15:
                {
                alt4=2;
                }
                break;
            case 18:
                {
                alt4=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 4, 0, input);

                throw nvae;
            }

            switch (alt4) {
                case 1 :
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:257:5: this_Layer_0= ruleLayer
                    {
                     
                            newCompositeNode(grammarAccess.getTypeAccess().getLayerParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleLayer_in_ruleType532);
                    this_Layer_0=ruleLayer();

                    state._fsp--;

                     
                            current = this_Layer_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:267:5: this_TypeDef_1= ruleTypeDef
                    {
                     
                            newCompositeNode(grammarAccess.getTypeAccess().getTypeDefParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleTypeDef_in_ruleType559);
                    this_TypeDef_1=ruleTypeDef();

                    state._fsp--;

                     
                            current = this_TypeDef_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 3 :
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:277:5: this_Entity_2= ruleEntity
                    {
                     
                            newCompositeNode(grammarAccess.getTypeAccess().getEntityParserRuleCall_2()); 
                        
                    pushFollow(FOLLOW_ruleEntity_in_ruleType586);
                    this_Entity_2=ruleEntity();

                    state._fsp--;

                     
                            current = this_Entity_2; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleType"


    // $ANTLR start "entryRuleLayer"
    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:293:1: entryRuleLayer returns [EObject current=null] : iv_ruleLayer= ruleLayer EOF ;
    public final EObject entryRuleLayer() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleLayer = null;


        try {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:294:2: (iv_ruleLayer= ruleLayer EOF )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:295:2: iv_ruleLayer= ruleLayer EOF
            {
             newCompositeNode(grammarAccess.getLayerRule()); 
            pushFollow(FOLLOW_ruleLayer_in_entryRuleLayer621);
            iv_ruleLayer=ruleLayer();

            state._fsp--;

             current =iv_ruleLayer; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleLayer631); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleLayer"


    // $ANTLR start "ruleLayer"
    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:302:1: ruleLayer returns [EObject current=null] : (otherlv_0= 'layer' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( ( ( ( ({...}? => ( ({...}? => ( (lv_connection_4_0= ruleConnection ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_createdao_5_0= ruleCreateDAO ) ) ) ) ) )* ) ) ) ( (lv_types_6_0= ruleType ) )* otherlv_7= '}' ) ;
    public final EObject ruleLayer() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_7=null;
        EObject lv_connection_4_0 = null;

        EObject lv_createdao_5_0 = null;

        EObject lv_types_6_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:305:28: ( (otherlv_0= 'layer' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( ( ( ( ({...}? => ( ({...}? => ( (lv_connection_4_0= ruleConnection ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_createdao_5_0= ruleCreateDAO ) ) ) ) ) )* ) ) ) ( (lv_types_6_0= ruleType ) )* otherlv_7= '}' ) )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:306:1: (otherlv_0= 'layer' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( ( ( ( ({...}? => ( ({...}? => ( (lv_connection_4_0= ruleConnection ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_createdao_5_0= ruleCreateDAO ) ) ) ) ) )* ) ) ) ( (lv_types_6_0= ruleType ) )* otherlv_7= '}' )
            {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:306:1: (otherlv_0= 'layer' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( ( ( ( ({...}? => ( ({...}? => ( (lv_connection_4_0= ruleConnection ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_createdao_5_0= ruleCreateDAO ) ) ) ) ) )* ) ) ) ( (lv_types_6_0= ruleType ) )* otherlv_7= '}' )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:306:3: otherlv_0= 'layer' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( ( ( ( ({...}? => ( ({...}? => ( (lv_connection_4_0= ruleConnection ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_createdao_5_0= ruleCreateDAO ) ) ) ) ) )* ) ) ) ( (lv_types_6_0= ruleType ) )* otherlv_7= '}'
            {
            otherlv_0=(Token)match(input,12,FOLLOW_12_in_ruleLayer668); 

                	newLeafNode(otherlv_0, grammarAccess.getLayerAccess().getLayerKeyword_0());
                
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:310:1: ( (lv_name_1_0= RULE_ID ) )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:311:1: (lv_name_1_0= RULE_ID )
            {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:311:1: (lv_name_1_0= RULE_ID )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:312:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleLayer685); 

            			newLeafNode(lv_name_1_0, grammarAccess.getLayerAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getLayerRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            otherlv_2=(Token)match(input,13,FOLLOW_13_in_ruleLayer702); 

                	newLeafNode(otherlv_2, grammarAccess.getLayerAccess().getLeftCurlyBracketKeyword_2());
                
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:332:1: ( ( ( ( ({...}? => ( ({...}? => ( (lv_connection_4_0= ruleConnection ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_createdao_5_0= ruleCreateDAO ) ) ) ) ) )* ) ) )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:334:1: ( ( ( ({...}? => ( ({...}? => ( (lv_connection_4_0= ruleConnection ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_createdao_5_0= ruleCreateDAO ) ) ) ) ) )* ) )
            {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:334:1: ( ( ( ({...}? => ( ({...}? => ( (lv_connection_4_0= ruleConnection ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_createdao_5_0= ruleCreateDAO ) ) ) ) ) )* ) )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:335:2: ( ( ({...}? => ( ({...}? => ( (lv_connection_4_0= ruleConnection ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_createdao_5_0= ruleCreateDAO ) ) ) ) ) )* )
            {
             
            	  getUnorderedGroupHelper().enter(grammarAccess.getLayerAccess().getUnorderedGroup_3());
            	
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:338:2: ( ( ({...}? => ( ({...}? => ( (lv_connection_4_0= ruleConnection ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_createdao_5_0= ruleCreateDAO ) ) ) ) ) )* )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:339:3: ( ({...}? => ( ({...}? => ( (lv_connection_4_0= ruleConnection ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_createdao_5_0= ruleCreateDAO ) ) ) ) ) )*
            {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:339:3: ( ({...}? => ( ({...}? => ( (lv_connection_4_0= ruleConnection ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_createdao_5_0= ruleCreateDAO ) ) ) ) ) )*
            loop5:
            do {
                int alt5=3;
                int LA5_0 = input.LA(1);

                if ( LA5_0 ==24 && getUnorderedGroupHelper().canSelect(grammarAccess.getLayerAccess().getUnorderedGroup_3(), 0) ) {
                    alt5=1;
                }
                else if ( LA5_0 >=39 && LA5_0<=40 && getUnorderedGroupHelper().canSelect(grammarAccess.getLayerAccess().getUnorderedGroup_3(), 1) ) {
                    alt5=2;
                }


                switch (alt5) {
            	case 1 :
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:341:4: ({...}? => ( ({...}? => ( (lv_connection_4_0= ruleConnection ) ) ) ) )
            	    {
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:341:4: ({...}? => ( ({...}? => ( (lv_connection_4_0= ruleConnection ) ) ) ) )
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:342:5: {...}? => ( ({...}? => ( (lv_connection_4_0= ruleConnection ) ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getLayerAccess().getUnorderedGroup_3(), 0) ) {
            	        throw new FailedPredicateException(input, "ruleLayer", "getUnorderedGroupHelper().canSelect(grammarAccess.getLayerAccess().getUnorderedGroup_3(), 0)");
            	    }
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:342:102: ( ({...}? => ( (lv_connection_4_0= ruleConnection ) ) ) )
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:343:6: ({...}? => ( (lv_connection_4_0= ruleConnection ) ) )
            	    {
            	     
            	    	 				  getUnorderedGroupHelper().select(grammarAccess.getLayerAccess().getUnorderedGroup_3(), 0);
            	    	 				
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:346:6: ({...}? => ( (lv_connection_4_0= ruleConnection ) ) )
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:346:7: {...}? => ( (lv_connection_4_0= ruleConnection ) )
            	    {
            	    if ( !((true)) ) {
            	        throw new FailedPredicateException(input, "ruleLayer", "true");
            	    }
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:346:16: ( (lv_connection_4_0= ruleConnection ) )
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:347:1: (lv_connection_4_0= ruleConnection )
            	    {
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:347:1: (lv_connection_4_0= ruleConnection )
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:348:3: lv_connection_4_0= ruleConnection
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getLayerAccess().getConnectionConnectionParserRuleCall_3_0_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleConnection_in_ruleLayer768);
            	    lv_connection_4_0=ruleConnection();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getLayerRule());
            	    	        }
            	           		set(
            	           			current, 
            	           			"connection",
            	            		lv_connection_4_0, 
            	            		"Connection");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }

            	     
            	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getLayerAccess().getUnorderedGroup_3());
            	    	 				

            	    }


            	    }


            	    }
            	    break;
            	case 2 :
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:371:4: ({...}? => ( ({...}? => ( (lv_createdao_5_0= ruleCreateDAO ) ) ) ) )
            	    {
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:371:4: ({...}? => ( ({...}? => ( (lv_createdao_5_0= ruleCreateDAO ) ) ) ) )
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:372:5: {...}? => ( ({...}? => ( (lv_createdao_5_0= ruleCreateDAO ) ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getLayerAccess().getUnorderedGroup_3(), 1) ) {
            	        throw new FailedPredicateException(input, "ruleLayer", "getUnorderedGroupHelper().canSelect(grammarAccess.getLayerAccess().getUnorderedGroup_3(), 1)");
            	    }
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:372:102: ( ({...}? => ( (lv_createdao_5_0= ruleCreateDAO ) ) ) )
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:373:6: ({...}? => ( (lv_createdao_5_0= ruleCreateDAO ) ) )
            	    {
            	     
            	    	 				  getUnorderedGroupHelper().select(grammarAccess.getLayerAccess().getUnorderedGroup_3(), 1);
            	    	 				
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:376:6: ({...}? => ( (lv_createdao_5_0= ruleCreateDAO ) ) )
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:376:7: {...}? => ( (lv_createdao_5_0= ruleCreateDAO ) )
            	    {
            	    if ( !((true)) ) {
            	        throw new FailedPredicateException(input, "ruleLayer", "true");
            	    }
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:376:16: ( (lv_createdao_5_0= ruleCreateDAO ) )
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:377:1: (lv_createdao_5_0= ruleCreateDAO )
            	    {
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:377:1: (lv_createdao_5_0= ruleCreateDAO )
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:378:3: lv_createdao_5_0= ruleCreateDAO
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getLayerAccess().getCreatedaoCreateDAOParserRuleCall_3_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleCreateDAO_in_ruleLayer843);
            	    lv_createdao_5_0=ruleCreateDAO();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getLayerRule());
            	    	        }
            	           		set(
            	           			current, 
            	           			"createdao",
            	            		lv_createdao_5_0, 
            	            		"CreateDAO");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }

            	     
            	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getLayerAccess().getUnorderedGroup_3());
            	    	 				

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop5;
                }
            } while (true);


            }


            }

             
            	  getUnorderedGroupHelper().leave(grammarAccess.getLayerAccess().getUnorderedGroup_3());
            	

            }

            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:408:2: ( (lv_types_6_0= ruleType ) )*
            loop6:
            do {
                int alt6=2;
                int LA6_0 = input.LA(1);

                if ( (LA6_0==12||LA6_0==15||LA6_0==18) ) {
                    alt6=1;
                }


                switch (alt6) {
            	case 1 :
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:409:1: (lv_types_6_0= ruleType )
            	    {
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:409:1: (lv_types_6_0= ruleType )
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:410:3: lv_types_6_0= ruleType
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getLayerAccess().getTypesTypeParserRuleCall_4_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleType_in_ruleLayer904);
            	    lv_types_6_0=ruleType();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getLayerRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"types",
            	            		lv_types_6_0, 
            	            		"Type");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop6;
                }
            } while (true);

            otherlv_7=(Token)match(input,14,FOLLOW_14_in_ruleLayer917); 

                	newLeafNode(otherlv_7, grammarAccess.getLayerAccess().getRightCurlyBracketKeyword_5());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleLayer"


    // $ANTLR start "entryRuleTypeDef"
    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:438:1: entryRuleTypeDef returns [EObject current=null] : iv_ruleTypeDef= ruleTypeDef EOF ;
    public final EObject entryRuleTypeDef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTypeDef = null;


        try {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:439:2: (iv_ruleTypeDef= ruleTypeDef EOF )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:440:2: iv_ruleTypeDef= ruleTypeDef EOF
            {
             newCompositeNode(grammarAccess.getTypeDefRule()); 
            pushFollow(FOLLOW_ruleTypeDef_in_entryRuleTypeDef953);
            iv_ruleTypeDef=ruleTypeDef();

            state._fsp--;

             current =iv_ruleTypeDef; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleTypeDef963); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTypeDef"


    // $ANTLR start "ruleTypeDef"
    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:447:1: ruleTypeDef returns [EObject current=null] : (otherlv_0= 'typedef' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'mapsto' ( (lv_mappedType_3_0= ruleJAVAID ) ) )? ) ;
    public final EObject ruleTypeDef() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        AntlrDatatypeRuleToken lv_mappedType_3_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:450:28: ( (otherlv_0= 'typedef' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'mapsto' ( (lv_mappedType_3_0= ruleJAVAID ) ) )? ) )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:451:1: (otherlv_0= 'typedef' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'mapsto' ( (lv_mappedType_3_0= ruleJAVAID ) ) )? )
            {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:451:1: (otherlv_0= 'typedef' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'mapsto' ( (lv_mappedType_3_0= ruleJAVAID ) ) )? )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:451:3: otherlv_0= 'typedef' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'mapsto' ( (lv_mappedType_3_0= ruleJAVAID ) ) )?
            {
            otherlv_0=(Token)match(input,15,FOLLOW_15_in_ruleTypeDef1000); 

                	newLeafNode(otherlv_0, grammarAccess.getTypeDefAccess().getTypedefKeyword_0());
                
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:455:1: ( (lv_name_1_0= RULE_ID ) )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:456:1: (lv_name_1_0= RULE_ID )
            {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:456:1: (lv_name_1_0= RULE_ID )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:457:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleTypeDef1017); 

            			newLeafNode(lv_name_1_0, grammarAccess.getTypeDefAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getTypeDefRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:473:2: (otherlv_2= 'mapsto' ( (lv_mappedType_3_0= ruleJAVAID ) ) )?
            int alt7=2;
            int LA7_0 = input.LA(1);

            if ( (LA7_0==16) ) {
                alt7=1;
            }
            switch (alt7) {
                case 1 :
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:473:4: otherlv_2= 'mapsto' ( (lv_mappedType_3_0= ruleJAVAID ) )
                    {
                    otherlv_2=(Token)match(input,16,FOLLOW_16_in_ruleTypeDef1035); 

                        	newLeafNode(otherlv_2, grammarAccess.getTypeDefAccess().getMapstoKeyword_2_0());
                        
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:477:1: ( (lv_mappedType_3_0= ruleJAVAID ) )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:478:1: (lv_mappedType_3_0= ruleJAVAID )
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:478:1: (lv_mappedType_3_0= ruleJAVAID )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:479:3: lv_mappedType_3_0= ruleJAVAID
                    {
                     
                    	        newCompositeNode(grammarAccess.getTypeDefAccess().getMappedTypeJAVAIDParserRuleCall_2_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleJAVAID_in_ruleTypeDef1056);
                    lv_mappedType_3_0=ruleJAVAID();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getTypeDefRule());
                    	        }
                           		set(
                           			current, 
                           			"mappedType",
                            		lv_mappedType_3_0, 
                            		"JAVAID");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTypeDef"


    // $ANTLR start "entryRuleJAVAID"
    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:503:1: entryRuleJAVAID returns [String current=null] : iv_ruleJAVAID= ruleJAVAID EOF ;
    public final String entryRuleJAVAID() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleJAVAID = null;


        try {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:504:2: (iv_ruleJAVAID= ruleJAVAID EOF )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:505:2: iv_ruleJAVAID= ruleJAVAID EOF
            {
             newCompositeNode(grammarAccess.getJAVAIDRule()); 
            pushFollow(FOLLOW_ruleJAVAID_in_entryRuleJAVAID1095);
            iv_ruleJAVAID=ruleJAVAID();

            state._fsp--;

             current =iv_ruleJAVAID.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleJAVAID1106); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleJAVAID"


    // $ANTLR start "ruleJAVAID"
    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:512:1: ruleJAVAID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) ;
    public final AntlrDatatypeRuleToken ruleJAVAID() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_ID_0=null;
        Token kw=null;
        Token this_ID_2=null;

         enterRule(); 
            
        try {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:515:28: ( (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:516:1: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
            {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:516:1: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:516:6: this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )*
            {
            this_ID_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleJAVAID1146); 

            		current.merge(this_ID_0);
                
             
                newLeafNode(this_ID_0, grammarAccess.getJAVAIDAccess().getIDTerminalRuleCall_0()); 
                
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:523:1: (kw= '.' this_ID_2= RULE_ID )*
            loop8:
            do {
                int alt8=2;
                int LA8_0 = input.LA(1);

                if ( (LA8_0==17) ) {
                    alt8=1;
                }


                switch (alt8) {
            	case 1 :
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:524:2: kw= '.' this_ID_2= RULE_ID
            	    {
            	    kw=(Token)match(input,17,FOLLOW_17_in_ruleJAVAID1165); 

            	            current.merge(kw);
            	            newLeafNode(kw, grammarAccess.getJAVAIDAccess().getFullStopKeyword_1_0()); 
            	        
            	    this_ID_2=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleJAVAID1180); 

            	    		current.merge(this_ID_2);
            	        
            	     
            	        newLeafNode(this_ID_2, grammarAccess.getJAVAIDAccess().getIDTerminalRuleCall_1_1()); 
            	        

            	    }
            	    break;

            	default :
            	    break loop8;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleJAVAID"


    // $ANTLR start "entryRuleEntity"
    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:544:1: entryRuleEntity returns [EObject current=null] : iv_ruleEntity= ruleEntity EOF ;
    public final EObject entryRuleEntity() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEntity = null;


        try {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:545:2: (iv_ruleEntity= ruleEntity EOF )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:546:2: iv_ruleEntity= ruleEntity EOF
            {
             newCompositeNode(grammarAccess.getEntityRule()); 
            pushFollow(FOLLOW_ruleEntity_in_entryRuleEntity1227);
            iv_ruleEntity=ruleEntity();

            state._fsp--;

             current =iv_ruleEntity; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleEntity1237); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEntity"


    // $ANTLR start "ruleEntity"
    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:553:1: ruleEntity returns [EObject current=null] : (otherlv_0= 'entity' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'extends' ( (otherlv_3= RULE_ID ) ) )? otherlv_4= '{' ( (lv_attributes_5_0= ruleAttribute ) )* otherlv_6= '}' ) ;
    public final EObject ruleEntity() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        EObject lv_attributes_5_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:556:28: ( (otherlv_0= 'entity' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'extends' ( (otherlv_3= RULE_ID ) ) )? otherlv_4= '{' ( (lv_attributes_5_0= ruleAttribute ) )* otherlv_6= '}' ) )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:557:1: (otherlv_0= 'entity' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'extends' ( (otherlv_3= RULE_ID ) ) )? otherlv_4= '{' ( (lv_attributes_5_0= ruleAttribute ) )* otherlv_6= '}' )
            {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:557:1: (otherlv_0= 'entity' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'extends' ( (otherlv_3= RULE_ID ) ) )? otherlv_4= '{' ( (lv_attributes_5_0= ruleAttribute ) )* otherlv_6= '}' )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:557:3: otherlv_0= 'entity' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'extends' ( (otherlv_3= RULE_ID ) ) )? otherlv_4= '{' ( (lv_attributes_5_0= ruleAttribute ) )* otherlv_6= '}'
            {
            otherlv_0=(Token)match(input,18,FOLLOW_18_in_ruleEntity1274); 

                	newLeafNode(otherlv_0, grammarAccess.getEntityAccess().getEntityKeyword_0());
                
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:561:1: ( (lv_name_1_0= RULE_ID ) )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:562:1: (lv_name_1_0= RULE_ID )
            {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:562:1: (lv_name_1_0= RULE_ID )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:563:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleEntity1291); 

            			newLeafNode(lv_name_1_0, grammarAccess.getEntityAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getEntityRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:579:2: (otherlv_2= 'extends' ( (otherlv_3= RULE_ID ) ) )?
            int alt9=2;
            int LA9_0 = input.LA(1);

            if ( (LA9_0==19) ) {
                alt9=1;
            }
            switch (alt9) {
                case 1 :
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:579:4: otherlv_2= 'extends' ( (otherlv_3= RULE_ID ) )
                    {
                    otherlv_2=(Token)match(input,19,FOLLOW_19_in_ruleEntity1309); 

                        	newLeafNode(otherlv_2, grammarAccess.getEntityAccess().getExtendsKeyword_2_0());
                        
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:583:1: ( (otherlv_3= RULE_ID ) )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:584:1: (otherlv_3= RULE_ID )
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:584:1: (otherlv_3= RULE_ID )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:585:3: otherlv_3= RULE_ID
                    {

                    			if (current==null) {
                    	            current = createModelElement(grammarAccess.getEntityRule());
                    	        }
                            
                    otherlv_3=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleEntity1329); 

                    		newLeafNode(otherlv_3, grammarAccess.getEntityAccess().getSuperEntityEntityCrossReference_2_1_0()); 
                    	

                    }


                    }


                    }
                    break;

            }

            otherlv_4=(Token)match(input,13,FOLLOW_13_in_ruleEntity1343); 

                	newLeafNode(otherlv_4, grammarAccess.getEntityAccess().getLeftCurlyBracketKeyword_3());
                
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:600:1: ( (lv_attributes_5_0= ruleAttribute ) )*
            loop10:
            do {
                int alt10=2;
                int LA10_0 = input.LA(1);

                if ( (LA10_0==RULE_ID||(LA10_0>=20 && LA10_0<=21)) ) {
                    alt10=1;
                }


                switch (alt10) {
            	case 1 :
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:601:1: (lv_attributes_5_0= ruleAttribute )
            	    {
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:601:1: (lv_attributes_5_0= ruleAttribute )
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:602:3: lv_attributes_5_0= ruleAttribute
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getEntityAccess().getAttributesAttributeParserRuleCall_4_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleAttribute_in_ruleEntity1364);
            	    lv_attributes_5_0=ruleAttribute();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getEntityRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"attributes",
            	            		lv_attributes_5_0, 
            	            		"Attribute");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop10;
                }
            } while (true);

            otherlv_6=(Token)match(input,14,FOLLOW_14_in_ruleEntity1377); 

                	newLeafNode(otherlv_6, grammarAccess.getEntityAccess().getRightCurlyBracketKeyword_5());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEntity"


    // $ANTLR start "entryRuleAttribute"
    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:630:1: entryRuleAttribute returns [EObject current=null] : iv_ruleAttribute= ruleAttribute EOF ;
    public final EObject entryRuleAttribute() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAttribute = null;


        try {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:631:2: (iv_ruleAttribute= ruleAttribute EOF )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:632:2: iv_ruleAttribute= ruleAttribute EOF
            {
             newCompositeNode(grammarAccess.getAttributeRule()); 
            pushFollow(FOLLOW_ruleAttribute_in_entryRuleAttribute1413);
            iv_ruleAttribute=ruleAttribute();

            state._fsp--;

             current =iv_ruleAttribute; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAttribute1423); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAttribute"


    // $ANTLR start "ruleAttribute"
    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:639:1: ruleAttribute returns [EObject current=null] : ( ( ( (lv_one_0_0= 'one' ) ) | ( (lv_many_1_0= 'many' ) ) )? ( (otherlv_2= RULE_ID ) ) ( (lv_name_3_0= RULE_ID ) ) ( (lv_flags_4_0= ruleFlags ) )? ) ;
    public final EObject ruleAttribute() throws RecognitionException {
        EObject current = null;

        Token lv_one_0_0=null;
        Token lv_many_1_0=null;
        Token otherlv_2=null;
        Token lv_name_3_0=null;
        EObject lv_flags_4_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:642:28: ( ( ( ( (lv_one_0_0= 'one' ) ) | ( (lv_many_1_0= 'many' ) ) )? ( (otherlv_2= RULE_ID ) ) ( (lv_name_3_0= RULE_ID ) ) ( (lv_flags_4_0= ruleFlags ) )? ) )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:643:1: ( ( ( (lv_one_0_0= 'one' ) ) | ( (lv_many_1_0= 'many' ) ) )? ( (otherlv_2= RULE_ID ) ) ( (lv_name_3_0= RULE_ID ) ) ( (lv_flags_4_0= ruleFlags ) )? )
            {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:643:1: ( ( ( (lv_one_0_0= 'one' ) ) | ( (lv_many_1_0= 'many' ) ) )? ( (otherlv_2= RULE_ID ) ) ( (lv_name_3_0= RULE_ID ) ) ( (lv_flags_4_0= ruleFlags ) )? )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:643:2: ( ( (lv_one_0_0= 'one' ) ) | ( (lv_many_1_0= 'many' ) ) )? ( (otherlv_2= RULE_ID ) ) ( (lv_name_3_0= RULE_ID ) ) ( (lv_flags_4_0= ruleFlags ) )?
            {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:643:2: ( ( (lv_one_0_0= 'one' ) ) | ( (lv_many_1_0= 'many' ) ) )?
            int alt11=3;
            int LA11_0 = input.LA(1);

            if ( (LA11_0==20) ) {
                alt11=1;
            }
            else if ( (LA11_0==21) ) {
                alt11=2;
            }
            switch (alt11) {
                case 1 :
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:643:3: ( (lv_one_0_0= 'one' ) )
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:643:3: ( (lv_one_0_0= 'one' ) )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:644:1: (lv_one_0_0= 'one' )
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:644:1: (lv_one_0_0= 'one' )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:645:3: lv_one_0_0= 'one'
                    {
                    lv_one_0_0=(Token)match(input,20,FOLLOW_20_in_ruleAttribute1467); 

                            newLeafNode(lv_one_0_0, grammarAccess.getAttributeAccess().getOneOneKeyword_0_0_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getAttributeRule());
                    	        }
                           		setWithLastConsumed(current, "one", true, "one");
                    	    

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:659:6: ( (lv_many_1_0= 'many' ) )
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:659:6: ( (lv_many_1_0= 'many' ) )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:660:1: (lv_many_1_0= 'many' )
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:660:1: (lv_many_1_0= 'many' )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:661:3: lv_many_1_0= 'many'
                    {
                    lv_many_1_0=(Token)match(input,21,FOLLOW_21_in_ruleAttribute1504); 

                            newLeafNode(lv_many_1_0, grammarAccess.getAttributeAccess().getManyManyKeyword_0_1_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getAttributeRule());
                    	        }
                           		setWithLastConsumed(current, "many", true, "many");
                    	    

                    }


                    }


                    }
                    break;

            }

            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:674:4: ( (otherlv_2= RULE_ID ) )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:675:1: (otherlv_2= RULE_ID )
            {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:675:1: (otherlv_2= RULE_ID )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:676:3: otherlv_2= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getAttributeRule());
            	        }
                    
            otherlv_2=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleAttribute1539); 

            		newLeafNode(otherlv_2, grammarAccess.getAttributeAccess().getTypeTypeCrossReference_1_0()); 
            	

            }


            }

            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:687:2: ( (lv_name_3_0= RULE_ID ) )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:688:1: (lv_name_3_0= RULE_ID )
            {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:688:1: (lv_name_3_0= RULE_ID )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:689:3: lv_name_3_0= RULE_ID
            {
            lv_name_3_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleAttribute1556); 

            			newLeafNode(lv_name_3_0, grammarAccess.getAttributeAccess().getNameIDTerminalRuleCall_2_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getAttributeRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_3_0, 
                    		"ID");
            	    

            }


            }

            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:705:2: ( (lv_flags_4_0= ruleFlags ) )?
            int alt12=2;
            int LA12_0 = input.LA(1);

            if ( (LA12_0==22) ) {
                alt12=1;
            }
            switch (alt12) {
                case 1 :
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:706:1: (lv_flags_4_0= ruleFlags )
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:706:1: (lv_flags_4_0= ruleFlags )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:707:3: lv_flags_4_0= ruleFlags
                    {
                     
                    	        newCompositeNode(grammarAccess.getAttributeAccess().getFlagsFlagsParserRuleCall_3_0()); 
                    	    
                    pushFollow(FOLLOW_ruleFlags_in_ruleAttribute1582);
                    lv_flags_4_0=ruleFlags();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getAttributeRule());
                    	        }
                           		set(
                           			current, 
                           			"flags",
                            		lv_flags_4_0, 
                            		"Flags");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAttribute"


    // $ANTLR start "entryRuleFlags"
    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:731:1: entryRuleFlags returns [EObject current=null] : iv_ruleFlags= ruleFlags EOF ;
    public final EObject entryRuleFlags() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleFlags = null;


        try {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:732:2: (iv_ruleFlags= ruleFlags EOF )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:733:2: iv_ruleFlags= ruleFlags EOF
            {
             newCompositeNode(grammarAccess.getFlagsRule()); 
            pushFollow(FOLLOW_ruleFlags_in_entryRuleFlags1619);
            iv_ruleFlags=ruleFlags();

            state._fsp--;

             current =iv_ruleFlags; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleFlags1629); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleFlags"


    // $ANTLR start "ruleFlags"
    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:740:1: ruleFlags returns [EObject current=null] : ( ( (lv_id_0_0= 'id' ) ) ( (lv_autoid_1_0= 'auto-increment' ) )? ) ;
    public final EObject ruleFlags() throws RecognitionException {
        EObject current = null;

        Token lv_id_0_0=null;
        Token lv_autoid_1_0=null;

         enterRule(); 
            
        try {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:743:28: ( ( ( (lv_id_0_0= 'id' ) ) ( (lv_autoid_1_0= 'auto-increment' ) )? ) )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:744:1: ( ( (lv_id_0_0= 'id' ) ) ( (lv_autoid_1_0= 'auto-increment' ) )? )
            {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:744:1: ( ( (lv_id_0_0= 'id' ) ) ( (lv_autoid_1_0= 'auto-increment' ) )? )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:744:2: ( (lv_id_0_0= 'id' ) ) ( (lv_autoid_1_0= 'auto-increment' ) )?
            {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:744:2: ( (lv_id_0_0= 'id' ) )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:745:1: (lv_id_0_0= 'id' )
            {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:745:1: (lv_id_0_0= 'id' )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:746:3: lv_id_0_0= 'id'
            {
            lv_id_0_0=(Token)match(input,22,FOLLOW_22_in_ruleFlags1672); 

                    newLeafNode(lv_id_0_0, grammarAccess.getFlagsAccess().getIdIdKeyword_0_0());
                

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getFlagsRule());
            	        }
                   		setWithLastConsumed(current, "id", true, "id");
            	    

            }


            }

            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:759:2: ( (lv_autoid_1_0= 'auto-increment' ) )?
            int alt13=2;
            int LA13_0 = input.LA(1);

            if ( (LA13_0==23) ) {
                alt13=1;
            }
            switch (alt13) {
                case 1 :
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:760:1: (lv_autoid_1_0= 'auto-increment' )
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:760:1: (lv_autoid_1_0= 'auto-increment' )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:761:3: lv_autoid_1_0= 'auto-increment'
                    {
                    lv_autoid_1_0=(Token)match(input,23,FOLLOW_23_in_ruleFlags1703); 

                            newLeafNode(lv_autoid_1_0, grammarAccess.getFlagsAccess().getAutoidAutoIncrementKeyword_1_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getFlagsRule());
                    	        }
                           		setWithLastConsumed(current, "autoid", true, "auto-increment");
                    	    

                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleFlags"


    // $ANTLR start "entryRuleConnection"
    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:782:1: entryRuleConnection returns [EObject current=null] : iv_ruleConnection= ruleConnection EOF ;
    public final EObject entryRuleConnection() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleConnection = null;


        try {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:783:2: (iv_ruleConnection= ruleConnection EOF )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:784:2: iv_ruleConnection= ruleConnection EOF
            {
             newCompositeNode(grammarAccess.getConnectionRule()); 
            pushFollow(FOLLOW_ruleConnection_in_entryRuleConnection1753);
            iv_ruleConnection=ruleConnection();

            state._fsp--;

             current =iv_ruleConnection; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleConnection1763); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleConnection"


    // $ANTLR start "ruleConnection"
    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:791:1: ruleConnection returns [EObject current=null] : (otherlv_0= 'create-connection' otherlv_1= '(' ( ( (otherlv_2= 'Type' otherlv_3= '=' ( (lv_type_4_0= ruleDataBase ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_6= ',' otherlv_7= 'Database' otherlv_8= '=' ( (lv_dbname_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= ',' otherlv_11= 'User' otherlv_12= '=' ( (lv_user_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= ',' otherlv_15= 'Password' otherlv_16= '=' ( (lv_password_17_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_18= ',' otherlv_19= 'URL' otherlv_20= '=' ( (lv_url_21_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_22= ',' otherlv_23= 'Port' otherlv_24= '=' ( (lv_port_25_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_26= ',' otherlv_27= 'Pool-Size' otherlv_28= '=' ( (lv_poolsize_29_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) ) | ( (otherlv_30= 'Database' otherlv_31= '=' ( (lv_dbname_32_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_34= ',' otherlv_35= 'Type' otherlv_36= '=' ( (lv_type_37_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_38= ',' otherlv_39= 'User' otherlv_40= '=' ( (lv_user_41_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_42= ',' otherlv_43= 'Password' otherlv_44= '=' ( (lv_password_45_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_46= ',' otherlv_47= 'URL' otherlv_48= '=' ( (lv_url_49_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_50= ',' otherlv_51= 'Port' otherlv_52= '=' ( (lv_port_53_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_54= ',' otherlv_55= 'Pool-Size' otherlv_56= '=' ( (lv_poolsize_57_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) ) | ( (otherlv_58= 'User' otherlv_59= '=' ( (lv_user_60_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_62= ',' otherlv_63= 'Type' otherlv_64= '=' ( (lv_type_65_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_66= ',' otherlv_67= 'Database' otherlv_68= '=' ( (lv_dbname_69_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_70= ',' otherlv_71= 'Password' otherlv_72= '=' ( (lv_password_73_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_74= ',' otherlv_75= 'URL' otherlv_76= '=' ( (lv_url_77_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_78= ',' otherlv_79= 'Port' otherlv_80= '=' ( (lv_port_81_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_82= ',' otherlv_83= 'Pool-Size' otherlv_84= '=' ( (lv_poolsize_85_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) ) | ( (otherlv_86= 'Password' otherlv_87= '=' ( (lv_password_88_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_90= ',' otherlv_91= 'Type' otherlv_92= '=' ( (lv_type_93_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_94= ',' otherlv_95= 'Database' otherlv_96= '=' ( (lv_dbname_97_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_98= ',' otherlv_99= 'User' otherlv_100= '=' ( (lv_user_101_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_102= ',' otherlv_103= 'URL' otherlv_104= '=' ( (lv_url_105_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_106= ',' otherlv_107= 'Port' otherlv_108= '=' ( (lv_port_109_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_110= ',' otherlv_111= 'Pool-Size' otherlv_112= '=' ( (lv_poolsize_113_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) ) | ( (otherlv_114= 'URL' otherlv_115= '=' ( (lv_url_116_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_118= ',' otherlv_119= 'Type' otherlv_120= '=' ( (lv_type_121_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_122= ',' otherlv_123= 'Database' otherlv_124= '=' ( (lv_dbname_125_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_126= ',' otherlv_127= 'User' otherlv_128= '=' ( (lv_user_129_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_130= ',' otherlv_131= 'Password' otherlv_132= '=' ( (lv_password_133_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_134= ',' otherlv_135= 'Port' otherlv_136= '=' ( (lv_port_137_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_138= ',' otherlv_139= 'Pool-Size' otherlv_140= '=' ( (lv_poolsize_141_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) ) | ( (otherlv_142= 'Port' otherlv_143= '=' ( (lv_port_144_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_146= ',' otherlv_147= 'Type' otherlv_148= '=' ( (lv_type_149_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_150= ',' otherlv_151= 'Database' otherlv_152= '=' ( (lv_dbname_153_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_154= ',' otherlv_155= 'User' otherlv_156= '=' ( (lv_user_157_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_158= ',' otherlv_159= 'Password' otherlv_160= '=' ( (lv_password_161_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_162= ',' otherlv_163= 'URL' otherlv_164= '=' ( (lv_url_165_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_166= ',' otherlv_167= 'Pool-Size' otherlv_168= '=' ( (lv_poolsize_169_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) ) | ( (otherlv_170= 'Pool-Size' otherlv_171= '=' ( (lv_poolsize_172_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_174= ',' otherlv_175= 'Type' otherlv_176= '=' ( (lv_type_177_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_178= ',' otherlv_179= 'Database' otherlv_180= '=' ( (lv_dbname_181_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_182= ',' otherlv_183= 'User' otherlv_184= '=' ( (lv_user_185_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_186= ',' otherlv_187= 'Password' otherlv_188= '=' ( (lv_password_189_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_190= ',' otherlv_191= 'URL' otherlv_192= '=' ( (lv_url_193_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_194= ',' otherlv_195= 'Port' otherlv_196= '=' ( (lv_port_197_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) ) ) otherlv_198= ')' ) ;
    public final EObject ruleConnection() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_6=null;
        Token otherlv_7=null;
        Token otherlv_8=null;
        Token lv_dbname_9_0=null;
        Token otherlv_10=null;
        Token otherlv_11=null;
        Token otherlv_12=null;
        Token lv_user_13_0=null;
        Token otherlv_14=null;
        Token otherlv_15=null;
        Token otherlv_16=null;
        Token lv_password_17_0=null;
        Token otherlv_18=null;
        Token otherlv_19=null;
        Token otherlv_20=null;
        Token lv_url_21_0=null;
        Token otherlv_22=null;
        Token otherlv_23=null;
        Token otherlv_24=null;
        Token lv_port_25_0=null;
        Token otherlv_26=null;
        Token otherlv_27=null;
        Token otherlv_28=null;
        Token lv_poolsize_29_0=null;
        Token otherlv_30=null;
        Token otherlv_31=null;
        Token lv_dbname_32_0=null;
        Token otherlv_34=null;
        Token otherlv_35=null;
        Token otherlv_36=null;
        Token otherlv_38=null;
        Token otherlv_39=null;
        Token otherlv_40=null;
        Token lv_user_41_0=null;
        Token otherlv_42=null;
        Token otherlv_43=null;
        Token otherlv_44=null;
        Token lv_password_45_0=null;
        Token otherlv_46=null;
        Token otherlv_47=null;
        Token otherlv_48=null;
        Token lv_url_49_0=null;
        Token otherlv_50=null;
        Token otherlv_51=null;
        Token otherlv_52=null;
        Token lv_port_53_0=null;
        Token otherlv_54=null;
        Token otherlv_55=null;
        Token otherlv_56=null;
        Token lv_poolsize_57_0=null;
        Token otherlv_58=null;
        Token otherlv_59=null;
        Token lv_user_60_0=null;
        Token otherlv_62=null;
        Token otherlv_63=null;
        Token otherlv_64=null;
        Token otherlv_66=null;
        Token otherlv_67=null;
        Token otherlv_68=null;
        Token lv_dbname_69_0=null;
        Token otherlv_70=null;
        Token otherlv_71=null;
        Token otherlv_72=null;
        Token lv_password_73_0=null;
        Token otherlv_74=null;
        Token otherlv_75=null;
        Token otherlv_76=null;
        Token lv_url_77_0=null;
        Token otherlv_78=null;
        Token otherlv_79=null;
        Token otherlv_80=null;
        Token lv_port_81_0=null;
        Token otherlv_82=null;
        Token otherlv_83=null;
        Token otherlv_84=null;
        Token lv_poolsize_85_0=null;
        Token otherlv_86=null;
        Token otherlv_87=null;
        Token lv_password_88_0=null;
        Token otherlv_90=null;
        Token otherlv_91=null;
        Token otherlv_92=null;
        Token otherlv_94=null;
        Token otherlv_95=null;
        Token otherlv_96=null;
        Token lv_dbname_97_0=null;
        Token otherlv_98=null;
        Token otherlv_99=null;
        Token otherlv_100=null;
        Token lv_user_101_0=null;
        Token otherlv_102=null;
        Token otherlv_103=null;
        Token otherlv_104=null;
        Token lv_url_105_0=null;
        Token otherlv_106=null;
        Token otherlv_107=null;
        Token otherlv_108=null;
        Token lv_port_109_0=null;
        Token otherlv_110=null;
        Token otherlv_111=null;
        Token otherlv_112=null;
        Token lv_poolsize_113_0=null;
        Token otherlv_114=null;
        Token otherlv_115=null;
        Token lv_url_116_0=null;
        Token otherlv_118=null;
        Token otherlv_119=null;
        Token otherlv_120=null;
        Token otherlv_122=null;
        Token otherlv_123=null;
        Token otherlv_124=null;
        Token lv_dbname_125_0=null;
        Token otherlv_126=null;
        Token otherlv_127=null;
        Token otherlv_128=null;
        Token lv_user_129_0=null;
        Token otherlv_130=null;
        Token otherlv_131=null;
        Token otherlv_132=null;
        Token lv_password_133_0=null;
        Token otherlv_134=null;
        Token otherlv_135=null;
        Token otherlv_136=null;
        Token lv_port_137_0=null;
        Token otherlv_138=null;
        Token otherlv_139=null;
        Token otherlv_140=null;
        Token lv_poolsize_141_0=null;
        Token otherlv_142=null;
        Token otherlv_143=null;
        Token lv_port_144_0=null;
        Token otherlv_146=null;
        Token otherlv_147=null;
        Token otherlv_148=null;
        Token otherlv_150=null;
        Token otherlv_151=null;
        Token otherlv_152=null;
        Token lv_dbname_153_0=null;
        Token otherlv_154=null;
        Token otherlv_155=null;
        Token otherlv_156=null;
        Token lv_user_157_0=null;
        Token otherlv_158=null;
        Token otherlv_159=null;
        Token otherlv_160=null;
        Token lv_password_161_0=null;
        Token otherlv_162=null;
        Token otherlv_163=null;
        Token otherlv_164=null;
        Token lv_url_165_0=null;
        Token otherlv_166=null;
        Token otherlv_167=null;
        Token otherlv_168=null;
        Token lv_poolsize_169_0=null;
        Token otherlv_170=null;
        Token otherlv_171=null;
        Token lv_poolsize_172_0=null;
        Token otherlv_174=null;
        Token otherlv_175=null;
        Token otherlv_176=null;
        Token otherlv_178=null;
        Token otherlv_179=null;
        Token otherlv_180=null;
        Token lv_dbname_181_0=null;
        Token otherlv_182=null;
        Token otherlv_183=null;
        Token otherlv_184=null;
        Token lv_user_185_0=null;
        Token otherlv_186=null;
        Token otherlv_187=null;
        Token otherlv_188=null;
        Token lv_password_189_0=null;
        Token otherlv_190=null;
        Token otherlv_191=null;
        Token otherlv_192=null;
        Token lv_url_193_0=null;
        Token otherlv_194=null;
        Token otherlv_195=null;
        Token otherlv_196=null;
        Token lv_port_197_0=null;
        Token otherlv_198=null;
        EObject lv_type_4_0 = null;

        EObject lv_type_37_0 = null;

        EObject lv_type_65_0 = null;

        EObject lv_type_93_0 = null;

        EObject lv_type_121_0 = null;

        EObject lv_type_149_0 = null;

        EObject lv_type_177_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:794:28: ( (otherlv_0= 'create-connection' otherlv_1= '(' ( ( (otherlv_2= 'Type' otherlv_3= '=' ( (lv_type_4_0= ruleDataBase ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_6= ',' otherlv_7= 'Database' otherlv_8= '=' ( (lv_dbname_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= ',' otherlv_11= 'User' otherlv_12= '=' ( (lv_user_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= ',' otherlv_15= 'Password' otherlv_16= '=' ( (lv_password_17_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_18= ',' otherlv_19= 'URL' otherlv_20= '=' ( (lv_url_21_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_22= ',' otherlv_23= 'Port' otherlv_24= '=' ( (lv_port_25_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_26= ',' otherlv_27= 'Pool-Size' otherlv_28= '=' ( (lv_poolsize_29_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) ) | ( (otherlv_30= 'Database' otherlv_31= '=' ( (lv_dbname_32_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_34= ',' otherlv_35= 'Type' otherlv_36= '=' ( (lv_type_37_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_38= ',' otherlv_39= 'User' otherlv_40= '=' ( (lv_user_41_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_42= ',' otherlv_43= 'Password' otherlv_44= '=' ( (lv_password_45_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_46= ',' otherlv_47= 'URL' otherlv_48= '=' ( (lv_url_49_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_50= ',' otherlv_51= 'Port' otherlv_52= '=' ( (lv_port_53_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_54= ',' otherlv_55= 'Pool-Size' otherlv_56= '=' ( (lv_poolsize_57_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) ) | ( (otherlv_58= 'User' otherlv_59= '=' ( (lv_user_60_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_62= ',' otherlv_63= 'Type' otherlv_64= '=' ( (lv_type_65_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_66= ',' otherlv_67= 'Database' otherlv_68= '=' ( (lv_dbname_69_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_70= ',' otherlv_71= 'Password' otherlv_72= '=' ( (lv_password_73_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_74= ',' otherlv_75= 'URL' otherlv_76= '=' ( (lv_url_77_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_78= ',' otherlv_79= 'Port' otherlv_80= '=' ( (lv_port_81_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_82= ',' otherlv_83= 'Pool-Size' otherlv_84= '=' ( (lv_poolsize_85_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) ) | ( (otherlv_86= 'Password' otherlv_87= '=' ( (lv_password_88_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_90= ',' otherlv_91= 'Type' otherlv_92= '=' ( (lv_type_93_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_94= ',' otherlv_95= 'Database' otherlv_96= '=' ( (lv_dbname_97_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_98= ',' otherlv_99= 'User' otherlv_100= '=' ( (lv_user_101_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_102= ',' otherlv_103= 'URL' otherlv_104= '=' ( (lv_url_105_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_106= ',' otherlv_107= 'Port' otherlv_108= '=' ( (lv_port_109_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_110= ',' otherlv_111= 'Pool-Size' otherlv_112= '=' ( (lv_poolsize_113_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) ) | ( (otherlv_114= 'URL' otherlv_115= '=' ( (lv_url_116_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_118= ',' otherlv_119= 'Type' otherlv_120= '=' ( (lv_type_121_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_122= ',' otherlv_123= 'Database' otherlv_124= '=' ( (lv_dbname_125_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_126= ',' otherlv_127= 'User' otherlv_128= '=' ( (lv_user_129_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_130= ',' otherlv_131= 'Password' otherlv_132= '=' ( (lv_password_133_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_134= ',' otherlv_135= 'Port' otherlv_136= '=' ( (lv_port_137_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_138= ',' otherlv_139= 'Pool-Size' otherlv_140= '=' ( (lv_poolsize_141_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) ) | ( (otherlv_142= 'Port' otherlv_143= '=' ( (lv_port_144_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_146= ',' otherlv_147= 'Type' otherlv_148= '=' ( (lv_type_149_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_150= ',' otherlv_151= 'Database' otherlv_152= '=' ( (lv_dbname_153_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_154= ',' otherlv_155= 'User' otherlv_156= '=' ( (lv_user_157_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_158= ',' otherlv_159= 'Password' otherlv_160= '=' ( (lv_password_161_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_162= ',' otherlv_163= 'URL' otherlv_164= '=' ( (lv_url_165_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_166= ',' otherlv_167= 'Pool-Size' otherlv_168= '=' ( (lv_poolsize_169_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) ) | ( (otherlv_170= 'Pool-Size' otherlv_171= '=' ( (lv_poolsize_172_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_174= ',' otherlv_175= 'Type' otherlv_176= '=' ( (lv_type_177_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_178= ',' otherlv_179= 'Database' otherlv_180= '=' ( (lv_dbname_181_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_182= ',' otherlv_183= 'User' otherlv_184= '=' ( (lv_user_185_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_186= ',' otherlv_187= 'Password' otherlv_188= '=' ( (lv_password_189_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_190= ',' otherlv_191= 'URL' otherlv_192= '=' ( (lv_url_193_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_194= ',' otherlv_195= 'Port' otherlv_196= '=' ( (lv_port_197_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) ) ) otherlv_198= ')' ) )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:795:1: (otherlv_0= 'create-connection' otherlv_1= '(' ( ( (otherlv_2= 'Type' otherlv_3= '=' ( (lv_type_4_0= ruleDataBase ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_6= ',' otherlv_7= 'Database' otherlv_8= '=' ( (lv_dbname_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= ',' otherlv_11= 'User' otherlv_12= '=' ( (lv_user_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= ',' otherlv_15= 'Password' otherlv_16= '=' ( (lv_password_17_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_18= ',' otherlv_19= 'URL' otherlv_20= '=' ( (lv_url_21_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_22= ',' otherlv_23= 'Port' otherlv_24= '=' ( (lv_port_25_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_26= ',' otherlv_27= 'Pool-Size' otherlv_28= '=' ( (lv_poolsize_29_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) ) | ( (otherlv_30= 'Database' otherlv_31= '=' ( (lv_dbname_32_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_34= ',' otherlv_35= 'Type' otherlv_36= '=' ( (lv_type_37_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_38= ',' otherlv_39= 'User' otherlv_40= '=' ( (lv_user_41_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_42= ',' otherlv_43= 'Password' otherlv_44= '=' ( (lv_password_45_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_46= ',' otherlv_47= 'URL' otherlv_48= '=' ( (lv_url_49_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_50= ',' otherlv_51= 'Port' otherlv_52= '=' ( (lv_port_53_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_54= ',' otherlv_55= 'Pool-Size' otherlv_56= '=' ( (lv_poolsize_57_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) ) | ( (otherlv_58= 'User' otherlv_59= '=' ( (lv_user_60_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_62= ',' otherlv_63= 'Type' otherlv_64= '=' ( (lv_type_65_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_66= ',' otherlv_67= 'Database' otherlv_68= '=' ( (lv_dbname_69_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_70= ',' otherlv_71= 'Password' otherlv_72= '=' ( (lv_password_73_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_74= ',' otherlv_75= 'URL' otherlv_76= '=' ( (lv_url_77_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_78= ',' otherlv_79= 'Port' otherlv_80= '=' ( (lv_port_81_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_82= ',' otherlv_83= 'Pool-Size' otherlv_84= '=' ( (lv_poolsize_85_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) ) | ( (otherlv_86= 'Password' otherlv_87= '=' ( (lv_password_88_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_90= ',' otherlv_91= 'Type' otherlv_92= '=' ( (lv_type_93_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_94= ',' otherlv_95= 'Database' otherlv_96= '=' ( (lv_dbname_97_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_98= ',' otherlv_99= 'User' otherlv_100= '=' ( (lv_user_101_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_102= ',' otherlv_103= 'URL' otherlv_104= '=' ( (lv_url_105_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_106= ',' otherlv_107= 'Port' otherlv_108= '=' ( (lv_port_109_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_110= ',' otherlv_111= 'Pool-Size' otherlv_112= '=' ( (lv_poolsize_113_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) ) | ( (otherlv_114= 'URL' otherlv_115= '=' ( (lv_url_116_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_118= ',' otherlv_119= 'Type' otherlv_120= '=' ( (lv_type_121_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_122= ',' otherlv_123= 'Database' otherlv_124= '=' ( (lv_dbname_125_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_126= ',' otherlv_127= 'User' otherlv_128= '=' ( (lv_user_129_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_130= ',' otherlv_131= 'Password' otherlv_132= '=' ( (lv_password_133_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_134= ',' otherlv_135= 'Port' otherlv_136= '=' ( (lv_port_137_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_138= ',' otherlv_139= 'Pool-Size' otherlv_140= '=' ( (lv_poolsize_141_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) ) | ( (otherlv_142= 'Port' otherlv_143= '=' ( (lv_port_144_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_146= ',' otherlv_147= 'Type' otherlv_148= '=' ( (lv_type_149_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_150= ',' otherlv_151= 'Database' otherlv_152= '=' ( (lv_dbname_153_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_154= ',' otherlv_155= 'User' otherlv_156= '=' ( (lv_user_157_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_158= ',' otherlv_159= 'Password' otherlv_160= '=' ( (lv_password_161_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_162= ',' otherlv_163= 'URL' otherlv_164= '=' ( (lv_url_165_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_166= ',' otherlv_167= 'Pool-Size' otherlv_168= '=' ( (lv_poolsize_169_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) ) | ( (otherlv_170= 'Pool-Size' otherlv_171= '=' ( (lv_poolsize_172_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_174= ',' otherlv_175= 'Type' otherlv_176= '=' ( (lv_type_177_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_178= ',' otherlv_179= 'Database' otherlv_180= '=' ( (lv_dbname_181_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_182= ',' otherlv_183= 'User' otherlv_184= '=' ( (lv_user_185_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_186= ',' otherlv_187= 'Password' otherlv_188= '=' ( (lv_password_189_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_190= ',' otherlv_191= 'URL' otherlv_192= '=' ( (lv_url_193_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_194= ',' otherlv_195= 'Port' otherlv_196= '=' ( (lv_port_197_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) ) ) otherlv_198= ')' )
            {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:795:1: (otherlv_0= 'create-connection' otherlv_1= '(' ( ( (otherlv_2= 'Type' otherlv_3= '=' ( (lv_type_4_0= ruleDataBase ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_6= ',' otherlv_7= 'Database' otherlv_8= '=' ( (lv_dbname_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= ',' otherlv_11= 'User' otherlv_12= '=' ( (lv_user_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= ',' otherlv_15= 'Password' otherlv_16= '=' ( (lv_password_17_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_18= ',' otherlv_19= 'URL' otherlv_20= '=' ( (lv_url_21_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_22= ',' otherlv_23= 'Port' otherlv_24= '=' ( (lv_port_25_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_26= ',' otherlv_27= 'Pool-Size' otherlv_28= '=' ( (lv_poolsize_29_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) ) | ( (otherlv_30= 'Database' otherlv_31= '=' ( (lv_dbname_32_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_34= ',' otherlv_35= 'Type' otherlv_36= '=' ( (lv_type_37_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_38= ',' otherlv_39= 'User' otherlv_40= '=' ( (lv_user_41_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_42= ',' otherlv_43= 'Password' otherlv_44= '=' ( (lv_password_45_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_46= ',' otherlv_47= 'URL' otherlv_48= '=' ( (lv_url_49_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_50= ',' otherlv_51= 'Port' otherlv_52= '=' ( (lv_port_53_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_54= ',' otherlv_55= 'Pool-Size' otherlv_56= '=' ( (lv_poolsize_57_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) ) | ( (otherlv_58= 'User' otherlv_59= '=' ( (lv_user_60_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_62= ',' otherlv_63= 'Type' otherlv_64= '=' ( (lv_type_65_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_66= ',' otherlv_67= 'Database' otherlv_68= '=' ( (lv_dbname_69_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_70= ',' otherlv_71= 'Password' otherlv_72= '=' ( (lv_password_73_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_74= ',' otherlv_75= 'URL' otherlv_76= '=' ( (lv_url_77_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_78= ',' otherlv_79= 'Port' otherlv_80= '=' ( (lv_port_81_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_82= ',' otherlv_83= 'Pool-Size' otherlv_84= '=' ( (lv_poolsize_85_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) ) | ( (otherlv_86= 'Password' otherlv_87= '=' ( (lv_password_88_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_90= ',' otherlv_91= 'Type' otherlv_92= '=' ( (lv_type_93_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_94= ',' otherlv_95= 'Database' otherlv_96= '=' ( (lv_dbname_97_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_98= ',' otherlv_99= 'User' otherlv_100= '=' ( (lv_user_101_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_102= ',' otherlv_103= 'URL' otherlv_104= '=' ( (lv_url_105_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_106= ',' otherlv_107= 'Port' otherlv_108= '=' ( (lv_port_109_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_110= ',' otherlv_111= 'Pool-Size' otherlv_112= '=' ( (lv_poolsize_113_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) ) | ( (otherlv_114= 'URL' otherlv_115= '=' ( (lv_url_116_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_118= ',' otherlv_119= 'Type' otherlv_120= '=' ( (lv_type_121_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_122= ',' otherlv_123= 'Database' otherlv_124= '=' ( (lv_dbname_125_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_126= ',' otherlv_127= 'User' otherlv_128= '=' ( (lv_user_129_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_130= ',' otherlv_131= 'Password' otherlv_132= '=' ( (lv_password_133_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_134= ',' otherlv_135= 'Port' otherlv_136= '=' ( (lv_port_137_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_138= ',' otherlv_139= 'Pool-Size' otherlv_140= '=' ( (lv_poolsize_141_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) ) | ( (otherlv_142= 'Port' otherlv_143= '=' ( (lv_port_144_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_146= ',' otherlv_147= 'Type' otherlv_148= '=' ( (lv_type_149_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_150= ',' otherlv_151= 'Database' otherlv_152= '=' ( (lv_dbname_153_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_154= ',' otherlv_155= 'User' otherlv_156= '=' ( (lv_user_157_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_158= ',' otherlv_159= 'Password' otherlv_160= '=' ( (lv_password_161_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_162= ',' otherlv_163= 'URL' otherlv_164= '=' ( (lv_url_165_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_166= ',' otherlv_167= 'Pool-Size' otherlv_168= '=' ( (lv_poolsize_169_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) ) | ( (otherlv_170= 'Pool-Size' otherlv_171= '=' ( (lv_poolsize_172_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_174= ',' otherlv_175= 'Type' otherlv_176= '=' ( (lv_type_177_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_178= ',' otherlv_179= 'Database' otherlv_180= '=' ( (lv_dbname_181_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_182= ',' otherlv_183= 'User' otherlv_184= '=' ( (lv_user_185_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_186= ',' otherlv_187= 'Password' otherlv_188= '=' ( (lv_password_189_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_190= ',' otherlv_191= 'URL' otherlv_192= '=' ( (lv_url_193_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_194= ',' otherlv_195= 'Port' otherlv_196= '=' ( (lv_port_197_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) ) ) otherlv_198= ')' )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:795:3: otherlv_0= 'create-connection' otherlv_1= '(' ( ( (otherlv_2= 'Type' otherlv_3= '=' ( (lv_type_4_0= ruleDataBase ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_6= ',' otherlv_7= 'Database' otherlv_8= '=' ( (lv_dbname_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= ',' otherlv_11= 'User' otherlv_12= '=' ( (lv_user_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= ',' otherlv_15= 'Password' otherlv_16= '=' ( (lv_password_17_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_18= ',' otherlv_19= 'URL' otherlv_20= '=' ( (lv_url_21_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_22= ',' otherlv_23= 'Port' otherlv_24= '=' ( (lv_port_25_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_26= ',' otherlv_27= 'Pool-Size' otherlv_28= '=' ( (lv_poolsize_29_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) ) | ( (otherlv_30= 'Database' otherlv_31= '=' ( (lv_dbname_32_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_34= ',' otherlv_35= 'Type' otherlv_36= '=' ( (lv_type_37_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_38= ',' otherlv_39= 'User' otherlv_40= '=' ( (lv_user_41_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_42= ',' otherlv_43= 'Password' otherlv_44= '=' ( (lv_password_45_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_46= ',' otherlv_47= 'URL' otherlv_48= '=' ( (lv_url_49_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_50= ',' otherlv_51= 'Port' otherlv_52= '=' ( (lv_port_53_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_54= ',' otherlv_55= 'Pool-Size' otherlv_56= '=' ( (lv_poolsize_57_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) ) | ( (otherlv_58= 'User' otherlv_59= '=' ( (lv_user_60_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_62= ',' otherlv_63= 'Type' otherlv_64= '=' ( (lv_type_65_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_66= ',' otherlv_67= 'Database' otherlv_68= '=' ( (lv_dbname_69_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_70= ',' otherlv_71= 'Password' otherlv_72= '=' ( (lv_password_73_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_74= ',' otherlv_75= 'URL' otherlv_76= '=' ( (lv_url_77_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_78= ',' otherlv_79= 'Port' otherlv_80= '=' ( (lv_port_81_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_82= ',' otherlv_83= 'Pool-Size' otherlv_84= '=' ( (lv_poolsize_85_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) ) | ( (otherlv_86= 'Password' otherlv_87= '=' ( (lv_password_88_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_90= ',' otherlv_91= 'Type' otherlv_92= '=' ( (lv_type_93_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_94= ',' otherlv_95= 'Database' otherlv_96= '=' ( (lv_dbname_97_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_98= ',' otherlv_99= 'User' otherlv_100= '=' ( (lv_user_101_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_102= ',' otherlv_103= 'URL' otherlv_104= '=' ( (lv_url_105_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_106= ',' otherlv_107= 'Port' otherlv_108= '=' ( (lv_port_109_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_110= ',' otherlv_111= 'Pool-Size' otherlv_112= '=' ( (lv_poolsize_113_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) ) | ( (otherlv_114= 'URL' otherlv_115= '=' ( (lv_url_116_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_118= ',' otherlv_119= 'Type' otherlv_120= '=' ( (lv_type_121_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_122= ',' otherlv_123= 'Database' otherlv_124= '=' ( (lv_dbname_125_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_126= ',' otherlv_127= 'User' otherlv_128= '=' ( (lv_user_129_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_130= ',' otherlv_131= 'Password' otherlv_132= '=' ( (lv_password_133_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_134= ',' otherlv_135= 'Port' otherlv_136= '=' ( (lv_port_137_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_138= ',' otherlv_139= 'Pool-Size' otherlv_140= '=' ( (lv_poolsize_141_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) ) | ( (otherlv_142= 'Port' otherlv_143= '=' ( (lv_port_144_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_146= ',' otherlv_147= 'Type' otherlv_148= '=' ( (lv_type_149_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_150= ',' otherlv_151= 'Database' otherlv_152= '=' ( (lv_dbname_153_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_154= ',' otherlv_155= 'User' otherlv_156= '=' ( (lv_user_157_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_158= ',' otherlv_159= 'Password' otherlv_160= '=' ( (lv_password_161_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_162= ',' otherlv_163= 'URL' otherlv_164= '=' ( (lv_url_165_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_166= ',' otherlv_167= 'Pool-Size' otherlv_168= '=' ( (lv_poolsize_169_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) ) | ( (otherlv_170= 'Pool-Size' otherlv_171= '=' ( (lv_poolsize_172_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_174= ',' otherlv_175= 'Type' otherlv_176= '=' ( (lv_type_177_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_178= ',' otherlv_179= 'Database' otherlv_180= '=' ( (lv_dbname_181_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_182= ',' otherlv_183= 'User' otherlv_184= '=' ( (lv_user_185_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_186= ',' otherlv_187= 'Password' otherlv_188= '=' ( (lv_password_189_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_190= ',' otherlv_191= 'URL' otherlv_192= '=' ( (lv_url_193_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_194= ',' otherlv_195= 'Port' otherlv_196= '=' ( (lv_port_197_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) ) ) otherlv_198= ')'
            {
            otherlv_0=(Token)match(input,24,FOLLOW_24_in_ruleConnection1800); 

                	newLeafNode(otherlv_0, grammarAccess.getConnectionAccess().getCreateConnectionKeyword_0());
                
            otherlv_1=(Token)match(input,25,FOLLOW_25_in_ruleConnection1812); 

                	newLeafNode(otherlv_1, grammarAccess.getConnectionAccess().getLeftParenthesisKeyword_1());
                
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:803:1: ( ( (otherlv_2= 'Type' otherlv_3= '=' ( (lv_type_4_0= ruleDataBase ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_6= ',' otherlv_7= 'Database' otherlv_8= '=' ( (lv_dbname_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= ',' otherlv_11= 'User' otherlv_12= '=' ( (lv_user_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= ',' otherlv_15= 'Password' otherlv_16= '=' ( (lv_password_17_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_18= ',' otherlv_19= 'URL' otherlv_20= '=' ( (lv_url_21_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_22= ',' otherlv_23= 'Port' otherlv_24= '=' ( (lv_port_25_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_26= ',' otherlv_27= 'Pool-Size' otherlv_28= '=' ( (lv_poolsize_29_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) ) | ( (otherlv_30= 'Database' otherlv_31= '=' ( (lv_dbname_32_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_34= ',' otherlv_35= 'Type' otherlv_36= '=' ( (lv_type_37_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_38= ',' otherlv_39= 'User' otherlv_40= '=' ( (lv_user_41_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_42= ',' otherlv_43= 'Password' otherlv_44= '=' ( (lv_password_45_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_46= ',' otherlv_47= 'URL' otherlv_48= '=' ( (lv_url_49_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_50= ',' otherlv_51= 'Port' otherlv_52= '=' ( (lv_port_53_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_54= ',' otherlv_55= 'Pool-Size' otherlv_56= '=' ( (lv_poolsize_57_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) ) | ( (otherlv_58= 'User' otherlv_59= '=' ( (lv_user_60_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_62= ',' otherlv_63= 'Type' otherlv_64= '=' ( (lv_type_65_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_66= ',' otherlv_67= 'Database' otherlv_68= '=' ( (lv_dbname_69_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_70= ',' otherlv_71= 'Password' otherlv_72= '=' ( (lv_password_73_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_74= ',' otherlv_75= 'URL' otherlv_76= '=' ( (lv_url_77_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_78= ',' otherlv_79= 'Port' otherlv_80= '=' ( (lv_port_81_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_82= ',' otherlv_83= 'Pool-Size' otherlv_84= '=' ( (lv_poolsize_85_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) ) | ( (otherlv_86= 'Password' otherlv_87= '=' ( (lv_password_88_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_90= ',' otherlv_91= 'Type' otherlv_92= '=' ( (lv_type_93_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_94= ',' otherlv_95= 'Database' otherlv_96= '=' ( (lv_dbname_97_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_98= ',' otherlv_99= 'User' otherlv_100= '=' ( (lv_user_101_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_102= ',' otherlv_103= 'URL' otherlv_104= '=' ( (lv_url_105_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_106= ',' otherlv_107= 'Port' otherlv_108= '=' ( (lv_port_109_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_110= ',' otherlv_111= 'Pool-Size' otherlv_112= '=' ( (lv_poolsize_113_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) ) | ( (otherlv_114= 'URL' otherlv_115= '=' ( (lv_url_116_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_118= ',' otherlv_119= 'Type' otherlv_120= '=' ( (lv_type_121_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_122= ',' otherlv_123= 'Database' otherlv_124= '=' ( (lv_dbname_125_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_126= ',' otherlv_127= 'User' otherlv_128= '=' ( (lv_user_129_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_130= ',' otherlv_131= 'Password' otherlv_132= '=' ( (lv_password_133_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_134= ',' otherlv_135= 'Port' otherlv_136= '=' ( (lv_port_137_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_138= ',' otherlv_139= 'Pool-Size' otherlv_140= '=' ( (lv_poolsize_141_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) ) | ( (otherlv_142= 'Port' otherlv_143= '=' ( (lv_port_144_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_146= ',' otherlv_147= 'Type' otherlv_148= '=' ( (lv_type_149_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_150= ',' otherlv_151= 'Database' otherlv_152= '=' ( (lv_dbname_153_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_154= ',' otherlv_155= 'User' otherlv_156= '=' ( (lv_user_157_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_158= ',' otherlv_159= 'Password' otherlv_160= '=' ( (lv_password_161_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_162= ',' otherlv_163= 'URL' otherlv_164= '=' ( (lv_url_165_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_166= ',' otherlv_167= 'Pool-Size' otherlv_168= '=' ( (lv_poolsize_169_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) ) | ( (otherlv_170= 'Pool-Size' otherlv_171= '=' ( (lv_poolsize_172_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_174= ',' otherlv_175= 'Type' otherlv_176= '=' ( (lv_type_177_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_178= ',' otherlv_179= 'Database' otherlv_180= '=' ( (lv_dbname_181_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_182= ',' otherlv_183= 'User' otherlv_184= '=' ( (lv_user_185_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_186= ',' otherlv_187= 'Password' otherlv_188= '=' ( (lv_password_189_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_190= ',' otherlv_191= 'URL' otherlv_192= '=' ( (lv_url_193_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_194= ',' otherlv_195= 'Port' otherlv_196= '=' ( (lv_port_197_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) ) )
            int alt21=7;
            switch ( input.LA(1) ) {
            case 26:
                {
                alt21=1;
                }
                break;
            case 29:
                {
                alt21=2;
                }
                break;
            case 30:
                {
                alt21=3;
                }
                break;
            case 31:
                {
                alt21=4;
                }
                break;
            case 32:
                {
                alt21=5;
                }
                break;
            case 33:
                {
                alt21=6;
                }
                break;
            case 34:
                {
                alt21=7;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 21, 0, input);

                throw nvae;
            }

            switch (alt21) {
                case 1 :
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:803:2: ( (otherlv_2= 'Type' otherlv_3= '=' ( (lv_type_4_0= ruleDataBase ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_6= ',' otherlv_7= 'Database' otherlv_8= '=' ( (lv_dbname_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= ',' otherlv_11= 'User' otherlv_12= '=' ( (lv_user_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= ',' otherlv_15= 'Password' otherlv_16= '=' ( (lv_password_17_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_18= ',' otherlv_19= 'URL' otherlv_20= '=' ( (lv_url_21_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_22= ',' otherlv_23= 'Port' otherlv_24= '=' ( (lv_port_25_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_26= ',' otherlv_27= 'Pool-Size' otherlv_28= '=' ( (lv_poolsize_29_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) )
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:803:2: ( (otherlv_2= 'Type' otherlv_3= '=' ( (lv_type_4_0= ruleDataBase ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_6= ',' otherlv_7= 'Database' otherlv_8= '=' ( (lv_dbname_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= ',' otherlv_11= 'User' otherlv_12= '=' ( (lv_user_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= ',' otherlv_15= 'Password' otherlv_16= '=' ( (lv_password_17_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_18= ',' otherlv_19= 'URL' otherlv_20= '=' ( (lv_url_21_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_22= ',' otherlv_23= 'Port' otherlv_24= '=' ( (lv_port_25_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_26= ',' otherlv_27= 'Pool-Size' otherlv_28= '=' ( (lv_poolsize_29_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:803:3: (otherlv_2= 'Type' otherlv_3= '=' ( (lv_type_4_0= ruleDataBase ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_6= ',' otherlv_7= 'Database' otherlv_8= '=' ( (lv_dbname_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= ',' otherlv_11= 'User' otherlv_12= '=' ( (lv_user_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= ',' otherlv_15= 'Password' otherlv_16= '=' ( (lv_password_17_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_18= ',' otherlv_19= 'URL' otherlv_20= '=' ( (lv_url_21_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_22= ',' otherlv_23= 'Port' otherlv_24= '=' ( (lv_port_25_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_26= ',' otherlv_27= 'Pool-Size' otherlv_28= '=' ( (lv_poolsize_29_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) )
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:803:3: (otherlv_2= 'Type' otherlv_3= '=' ( (lv_type_4_0= ruleDataBase ) ) )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:803:5: otherlv_2= 'Type' otherlv_3= '=' ( (lv_type_4_0= ruleDataBase ) )
                    {
                    otherlv_2=(Token)match(input,26,FOLLOW_26_in_ruleConnection1827); 

                        	newLeafNode(otherlv_2, grammarAccess.getConnectionAccess().getTypeKeyword_2_0_0_0());
                        
                    otherlv_3=(Token)match(input,27,FOLLOW_27_in_ruleConnection1839); 

                        	newLeafNode(otherlv_3, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_0_0_1());
                        
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:811:1: ( (lv_type_4_0= ruleDataBase ) )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:812:1: (lv_type_4_0= ruleDataBase )
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:812:1: (lv_type_4_0= ruleDataBase )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:813:3: lv_type_4_0= ruleDataBase
                    {
                     
                    	        newCompositeNode(grammarAccess.getConnectionAccess().getTypeDataBaseParserRuleCall_2_0_0_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleDataBase_in_ruleConnection1860);
                    lv_type_4_0=ruleDataBase();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getConnectionRule());
                    	        }
                           		set(
                           			current, 
                           			"type",
                            		lv_type_4_0, 
                            		"DataBase");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }

                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:829:3: ( ( ( ( ({...}? => ( ({...}? => (otherlv_6= ',' otherlv_7= 'Database' otherlv_8= '=' ( (lv_dbname_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= ',' otherlv_11= 'User' otherlv_12= '=' ( (lv_user_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= ',' otherlv_15= 'Password' otherlv_16= '=' ( (lv_password_17_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_18= ',' otherlv_19= 'URL' otherlv_20= '=' ( (lv_url_21_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_22= ',' otherlv_23= 'Port' otherlv_24= '=' ( (lv_port_25_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_26= ',' otherlv_27= 'Pool-Size' otherlv_28= '=' ( (lv_poolsize_29_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:831:1: ( ( ( ({...}? => ( ({...}? => (otherlv_6= ',' otherlv_7= 'Database' otherlv_8= '=' ( (lv_dbname_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= ',' otherlv_11= 'User' otherlv_12= '=' ( (lv_user_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= ',' otherlv_15= 'Password' otherlv_16= '=' ( (lv_password_17_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_18= ',' otherlv_19= 'URL' otherlv_20= '=' ( (lv_url_21_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_22= ',' otherlv_23= 'Port' otherlv_24= '=' ( (lv_port_25_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_26= ',' otherlv_27= 'Pool-Size' otherlv_28= '=' ( (lv_poolsize_29_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) )
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:831:1: ( ( ( ({...}? => ( ({...}? => (otherlv_6= ',' otherlv_7= 'Database' otherlv_8= '=' ( (lv_dbname_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= ',' otherlv_11= 'User' otherlv_12= '=' ( (lv_user_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= ',' otherlv_15= 'Password' otherlv_16= '=' ( (lv_password_17_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_18= ',' otherlv_19= 'URL' otherlv_20= '=' ( (lv_url_21_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_22= ',' otherlv_23= 'Port' otherlv_24= '=' ( (lv_port_25_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_26= ',' otherlv_27= 'Pool-Size' otherlv_28= '=' ( (lv_poolsize_29_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:832:2: ( ( ({...}? => ( ({...}? => (otherlv_6= ',' otherlv_7= 'Database' otherlv_8= '=' ( (lv_dbname_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= ',' otherlv_11= 'User' otherlv_12= '=' ( (lv_user_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= ',' otherlv_15= 'Password' otherlv_16= '=' ( (lv_password_17_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_18= ',' otherlv_19= 'URL' otherlv_20= '=' ( (lv_url_21_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_22= ',' otherlv_23= 'Port' otherlv_24= '=' ( (lv_port_25_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_26= ',' otherlv_27= 'Pool-Size' otherlv_28= '=' ( (lv_poolsize_29_0= RULE_STRING ) ) ) ) ) ) )+ {...}?)
                    {
                     
                    	  getUnorderedGroupHelper().enter(grammarAccess.getConnectionAccess().getUnorderedGroup_2_0_1());
                    	
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:835:2: ( ( ({...}? => ( ({...}? => (otherlv_6= ',' otherlv_7= 'Database' otherlv_8= '=' ( (lv_dbname_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= ',' otherlv_11= 'User' otherlv_12= '=' ( (lv_user_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= ',' otherlv_15= 'Password' otherlv_16= '=' ( (lv_password_17_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_18= ',' otherlv_19= 'URL' otherlv_20= '=' ( (lv_url_21_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_22= ',' otherlv_23= 'Port' otherlv_24= '=' ( (lv_port_25_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_26= ',' otherlv_27= 'Pool-Size' otherlv_28= '=' ( (lv_poolsize_29_0= RULE_STRING ) ) ) ) ) ) )+ {...}?)
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:836:3: ( ({...}? => ( ({...}? => (otherlv_6= ',' otherlv_7= 'Database' otherlv_8= '=' ( (lv_dbname_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= ',' otherlv_11= 'User' otherlv_12= '=' ( (lv_user_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= ',' otherlv_15= 'Password' otherlv_16= '=' ( (lv_password_17_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_18= ',' otherlv_19= 'URL' otherlv_20= '=' ( (lv_url_21_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_22= ',' otherlv_23= 'Port' otherlv_24= '=' ( (lv_port_25_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_26= ',' otherlv_27= 'Pool-Size' otherlv_28= '=' ( (lv_poolsize_29_0= RULE_STRING ) ) ) ) ) ) )+ {...}?
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:836:3: ( ({...}? => ( ({...}? => (otherlv_6= ',' otherlv_7= 'Database' otherlv_8= '=' ( (lv_dbname_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= ',' otherlv_11= 'User' otherlv_12= '=' ( (lv_user_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= ',' otherlv_15= 'Password' otherlv_16= '=' ( (lv_password_17_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_18= ',' otherlv_19= 'URL' otherlv_20= '=' ( (lv_url_21_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_22= ',' otherlv_23= 'Port' otherlv_24= '=' ( (lv_port_25_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_26= ',' otherlv_27= 'Pool-Size' otherlv_28= '=' ( (lv_poolsize_29_0= RULE_STRING ) ) ) ) ) ) )+
                    int cnt14=0;
                    loop14:
                    do {
                        int alt14=7;
                        int LA14_0 = input.LA(1);

                        if ( LA14_0 ==28 && ( getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_0_1(), 0) || getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_0_1(), 1) || getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_0_1(), 4) || getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_0_1(), 5) || getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_0_1(), 3) || getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_0_1(), 2) ) ) {
                            int LA14_2 = input.LA(2);

                            if ( LA14_2 ==34 && getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_0_1(), 5) ) {
                                alt14=6;
                            }
                            else if ( LA14_2 ==29 && getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_0_1(), 0) ) {
                                alt14=1;
                            }
                            else if ( LA14_2 ==31 && getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_0_1(), 2) ) {
                                alt14=3;
                            }
                            else if ( LA14_2 ==30 && getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_0_1(), 1) ) {
                                alt14=2;
                            }
                            else if ( LA14_2 ==33 && getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_0_1(), 4) ) {
                                alt14=5;
                            }
                            else if ( LA14_2 ==32 && getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_0_1(), 3) ) {
                                alt14=4;
                            }


                        }


                        switch (alt14) {
                    	case 1 :
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:838:4: ({...}? => ( ({...}? => (otherlv_6= ',' otherlv_7= 'Database' otherlv_8= '=' ( (lv_dbname_9_0= RULE_STRING ) ) ) ) ) )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:838:4: ({...}? => ( ({...}? => (otherlv_6= ',' otherlv_7= 'Database' otherlv_8= '=' ( (lv_dbname_9_0= RULE_STRING ) ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:839:5: {...}? => ( ({...}? => (otherlv_6= ',' otherlv_7= 'Database' otherlv_8= '=' ( (lv_dbname_9_0= RULE_STRING ) ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_0_1(), 0) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_0_1(), 0)");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:839:111: ( ({...}? => (otherlv_6= ',' otherlv_7= 'Database' otherlv_8= '=' ( (lv_dbname_9_0= RULE_STRING ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:840:6: ({...}? => (otherlv_6= ',' otherlv_7= 'Database' otherlv_8= '=' ( (lv_dbname_9_0= RULE_STRING ) ) ) )
                    	    {
                    	     
                    	    	 				  getUnorderedGroupHelper().select(grammarAccess.getConnectionAccess().getUnorderedGroup_2_0_1(), 0);
                    	    	 				
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:843:6: ({...}? => (otherlv_6= ',' otherlv_7= 'Database' otherlv_8= '=' ( (lv_dbname_9_0= RULE_STRING ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:843:7: {...}? => (otherlv_6= ',' otherlv_7= 'Database' otherlv_8= '=' ( (lv_dbname_9_0= RULE_STRING ) ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "true");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:843:16: (otherlv_6= ',' otherlv_7= 'Database' otherlv_8= '=' ( (lv_dbname_9_0= RULE_STRING ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:843:18: otherlv_6= ',' otherlv_7= 'Database' otherlv_8= '=' ( (lv_dbname_9_0= RULE_STRING ) )
                    	    {
                    	    otherlv_6=(Token)match(input,28,FOLLOW_28_in_ruleConnection1919); 

                    	        	newLeafNode(otherlv_6, grammarAccess.getConnectionAccess().getCommaKeyword_2_0_1_0_0());
                    	        
                    	    otherlv_7=(Token)match(input,29,FOLLOW_29_in_ruleConnection1931); 

                    	        	newLeafNode(otherlv_7, grammarAccess.getConnectionAccess().getDatabaseKeyword_2_0_1_0_1());
                    	        
                    	    otherlv_8=(Token)match(input,27,FOLLOW_27_in_ruleConnection1943); 

                    	        	newLeafNode(otherlv_8, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_0_1_0_2());
                    	        
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:855:1: ( (lv_dbname_9_0= RULE_STRING ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:856:1: (lv_dbname_9_0= RULE_STRING )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:856:1: (lv_dbname_9_0= RULE_STRING )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:857:3: lv_dbname_9_0= RULE_STRING
                    	    {
                    	    lv_dbname_9_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConnection1960); 

                    	    			newLeafNode(lv_dbname_9_0, grammarAccess.getConnectionAccess().getDbnameSTRINGTerminalRuleCall_2_0_1_0_3_0()); 
                    	    		

                    	    	        if (current==null) {
                    	    	            current = createModelElement(grammarAccess.getConnectionRule());
                    	    	        }
                    	           		setWithLastConsumed(
                    	           			current, 
                    	           			"dbname",
                    	            		lv_dbname_9_0, 
                    	            		"STRING");
                    	    	    

                    	    }


                    	    }


                    	    }


                    	    }

                    	     
                    	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConnectionAccess().getUnorderedGroup_2_0_1());
                    	    	 				

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 2 :
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:880:4: ({...}? => ( ({...}? => (otherlv_10= ',' otherlv_11= 'User' otherlv_12= '=' ( (lv_user_13_0= RULE_STRING ) ) ) ) ) )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:880:4: ({...}? => ( ({...}? => (otherlv_10= ',' otherlv_11= 'User' otherlv_12= '=' ( (lv_user_13_0= RULE_STRING ) ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:881:5: {...}? => ( ({...}? => (otherlv_10= ',' otherlv_11= 'User' otherlv_12= '=' ( (lv_user_13_0= RULE_STRING ) ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_0_1(), 1) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_0_1(), 1)");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:881:111: ( ({...}? => (otherlv_10= ',' otherlv_11= 'User' otherlv_12= '=' ( (lv_user_13_0= RULE_STRING ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:882:6: ({...}? => (otherlv_10= ',' otherlv_11= 'User' otherlv_12= '=' ( (lv_user_13_0= RULE_STRING ) ) ) )
                    	    {
                    	     
                    	    	 				  getUnorderedGroupHelper().select(grammarAccess.getConnectionAccess().getUnorderedGroup_2_0_1(), 1);
                    	    	 				
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:885:6: ({...}? => (otherlv_10= ',' otherlv_11= 'User' otherlv_12= '=' ( (lv_user_13_0= RULE_STRING ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:885:7: {...}? => (otherlv_10= ',' otherlv_11= 'User' otherlv_12= '=' ( (lv_user_13_0= RULE_STRING ) ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "true");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:885:16: (otherlv_10= ',' otherlv_11= 'User' otherlv_12= '=' ( (lv_user_13_0= RULE_STRING ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:885:18: otherlv_10= ',' otherlv_11= 'User' otherlv_12= '=' ( (lv_user_13_0= RULE_STRING ) )
                    	    {
                    	    otherlv_10=(Token)match(input,28,FOLLOW_28_in_ruleConnection2033); 

                    	        	newLeafNode(otherlv_10, grammarAccess.getConnectionAccess().getCommaKeyword_2_0_1_1_0());
                    	        
                    	    otherlv_11=(Token)match(input,30,FOLLOW_30_in_ruleConnection2045); 

                    	        	newLeafNode(otherlv_11, grammarAccess.getConnectionAccess().getUserKeyword_2_0_1_1_1());
                    	        
                    	    otherlv_12=(Token)match(input,27,FOLLOW_27_in_ruleConnection2057); 

                    	        	newLeafNode(otherlv_12, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_0_1_1_2());
                    	        
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:897:1: ( (lv_user_13_0= RULE_STRING ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:898:1: (lv_user_13_0= RULE_STRING )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:898:1: (lv_user_13_0= RULE_STRING )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:899:3: lv_user_13_0= RULE_STRING
                    	    {
                    	    lv_user_13_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConnection2074); 

                    	    			newLeafNode(lv_user_13_0, grammarAccess.getConnectionAccess().getUserSTRINGTerminalRuleCall_2_0_1_1_3_0()); 
                    	    		

                    	    	        if (current==null) {
                    	    	            current = createModelElement(grammarAccess.getConnectionRule());
                    	    	        }
                    	           		setWithLastConsumed(
                    	           			current, 
                    	           			"user",
                    	            		lv_user_13_0, 
                    	            		"STRING");
                    	    	    

                    	    }


                    	    }


                    	    }


                    	    }

                    	     
                    	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConnectionAccess().getUnorderedGroup_2_0_1());
                    	    	 				

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 3 :
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:922:4: ({...}? => ( ({...}? => (otherlv_14= ',' otherlv_15= 'Password' otherlv_16= '=' ( (lv_password_17_0= RULE_STRING ) ) ) ) ) )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:922:4: ({...}? => ( ({...}? => (otherlv_14= ',' otherlv_15= 'Password' otherlv_16= '=' ( (lv_password_17_0= RULE_STRING ) ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:923:5: {...}? => ( ({...}? => (otherlv_14= ',' otherlv_15= 'Password' otherlv_16= '=' ( (lv_password_17_0= RULE_STRING ) ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_0_1(), 2) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_0_1(), 2)");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:923:111: ( ({...}? => (otherlv_14= ',' otherlv_15= 'Password' otherlv_16= '=' ( (lv_password_17_0= RULE_STRING ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:924:6: ({...}? => (otherlv_14= ',' otherlv_15= 'Password' otherlv_16= '=' ( (lv_password_17_0= RULE_STRING ) ) ) )
                    	    {
                    	     
                    	    	 				  getUnorderedGroupHelper().select(grammarAccess.getConnectionAccess().getUnorderedGroup_2_0_1(), 2);
                    	    	 				
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:927:6: ({...}? => (otherlv_14= ',' otherlv_15= 'Password' otherlv_16= '=' ( (lv_password_17_0= RULE_STRING ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:927:7: {...}? => (otherlv_14= ',' otherlv_15= 'Password' otherlv_16= '=' ( (lv_password_17_0= RULE_STRING ) ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "true");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:927:16: (otherlv_14= ',' otherlv_15= 'Password' otherlv_16= '=' ( (lv_password_17_0= RULE_STRING ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:927:18: otherlv_14= ',' otherlv_15= 'Password' otherlv_16= '=' ( (lv_password_17_0= RULE_STRING ) )
                    	    {
                    	    otherlv_14=(Token)match(input,28,FOLLOW_28_in_ruleConnection2147); 

                    	        	newLeafNode(otherlv_14, grammarAccess.getConnectionAccess().getCommaKeyword_2_0_1_2_0());
                    	        
                    	    otherlv_15=(Token)match(input,31,FOLLOW_31_in_ruleConnection2159); 

                    	        	newLeafNode(otherlv_15, grammarAccess.getConnectionAccess().getPasswordKeyword_2_0_1_2_1());
                    	        
                    	    otherlv_16=(Token)match(input,27,FOLLOW_27_in_ruleConnection2171); 

                    	        	newLeafNode(otherlv_16, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_0_1_2_2());
                    	        
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:939:1: ( (lv_password_17_0= RULE_STRING ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:940:1: (lv_password_17_0= RULE_STRING )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:940:1: (lv_password_17_0= RULE_STRING )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:941:3: lv_password_17_0= RULE_STRING
                    	    {
                    	    lv_password_17_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConnection2188); 

                    	    			newLeafNode(lv_password_17_0, grammarAccess.getConnectionAccess().getPasswordSTRINGTerminalRuleCall_2_0_1_2_3_0()); 
                    	    		

                    	    	        if (current==null) {
                    	    	            current = createModelElement(grammarAccess.getConnectionRule());
                    	    	        }
                    	           		setWithLastConsumed(
                    	           			current, 
                    	           			"password",
                    	            		lv_password_17_0, 
                    	            		"STRING");
                    	    	    

                    	    }


                    	    }


                    	    }


                    	    }

                    	     
                    	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConnectionAccess().getUnorderedGroup_2_0_1());
                    	    	 				

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 4 :
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:964:4: ({...}? => ( ({...}? => (otherlv_18= ',' otherlv_19= 'URL' otherlv_20= '=' ( (lv_url_21_0= RULE_STRING ) ) ) ) ) )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:964:4: ({...}? => ( ({...}? => (otherlv_18= ',' otherlv_19= 'URL' otherlv_20= '=' ( (lv_url_21_0= RULE_STRING ) ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:965:5: {...}? => ( ({...}? => (otherlv_18= ',' otherlv_19= 'URL' otherlv_20= '=' ( (lv_url_21_0= RULE_STRING ) ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_0_1(), 3) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_0_1(), 3)");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:965:111: ( ({...}? => (otherlv_18= ',' otherlv_19= 'URL' otherlv_20= '=' ( (lv_url_21_0= RULE_STRING ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:966:6: ({...}? => (otherlv_18= ',' otherlv_19= 'URL' otherlv_20= '=' ( (lv_url_21_0= RULE_STRING ) ) ) )
                    	    {
                    	     
                    	    	 				  getUnorderedGroupHelper().select(grammarAccess.getConnectionAccess().getUnorderedGroup_2_0_1(), 3);
                    	    	 				
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:969:6: ({...}? => (otherlv_18= ',' otherlv_19= 'URL' otherlv_20= '=' ( (lv_url_21_0= RULE_STRING ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:969:7: {...}? => (otherlv_18= ',' otherlv_19= 'URL' otherlv_20= '=' ( (lv_url_21_0= RULE_STRING ) ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "true");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:969:16: (otherlv_18= ',' otherlv_19= 'URL' otherlv_20= '=' ( (lv_url_21_0= RULE_STRING ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:969:18: otherlv_18= ',' otherlv_19= 'URL' otherlv_20= '=' ( (lv_url_21_0= RULE_STRING ) )
                    	    {
                    	    otherlv_18=(Token)match(input,28,FOLLOW_28_in_ruleConnection2261); 

                    	        	newLeafNode(otherlv_18, grammarAccess.getConnectionAccess().getCommaKeyword_2_0_1_3_0());
                    	        
                    	    otherlv_19=(Token)match(input,32,FOLLOW_32_in_ruleConnection2273); 

                    	        	newLeafNode(otherlv_19, grammarAccess.getConnectionAccess().getURLKeyword_2_0_1_3_1());
                    	        
                    	    otherlv_20=(Token)match(input,27,FOLLOW_27_in_ruleConnection2285); 

                    	        	newLeafNode(otherlv_20, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_0_1_3_2());
                    	        
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:981:1: ( (lv_url_21_0= RULE_STRING ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:982:1: (lv_url_21_0= RULE_STRING )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:982:1: (lv_url_21_0= RULE_STRING )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:983:3: lv_url_21_0= RULE_STRING
                    	    {
                    	    lv_url_21_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConnection2302); 

                    	    			newLeafNode(lv_url_21_0, grammarAccess.getConnectionAccess().getUrlSTRINGTerminalRuleCall_2_0_1_3_3_0()); 
                    	    		

                    	    	        if (current==null) {
                    	    	            current = createModelElement(grammarAccess.getConnectionRule());
                    	    	        }
                    	           		setWithLastConsumed(
                    	           			current, 
                    	           			"url",
                    	            		lv_url_21_0, 
                    	            		"STRING");
                    	    	    

                    	    }


                    	    }


                    	    }


                    	    }

                    	     
                    	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConnectionAccess().getUnorderedGroup_2_0_1());
                    	    	 				

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 5 :
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1006:4: ({...}? => ( ({...}? => (otherlv_22= ',' otherlv_23= 'Port' otherlv_24= '=' ( (lv_port_25_0= RULE_STRING ) ) ) ) ) )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1006:4: ({...}? => ( ({...}? => (otherlv_22= ',' otherlv_23= 'Port' otherlv_24= '=' ( (lv_port_25_0= RULE_STRING ) ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1007:5: {...}? => ( ({...}? => (otherlv_22= ',' otherlv_23= 'Port' otherlv_24= '=' ( (lv_port_25_0= RULE_STRING ) ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_0_1(), 4) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_0_1(), 4)");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1007:111: ( ({...}? => (otherlv_22= ',' otherlv_23= 'Port' otherlv_24= '=' ( (lv_port_25_0= RULE_STRING ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1008:6: ({...}? => (otherlv_22= ',' otherlv_23= 'Port' otherlv_24= '=' ( (lv_port_25_0= RULE_STRING ) ) ) )
                    	    {
                    	     
                    	    	 				  getUnorderedGroupHelper().select(grammarAccess.getConnectionAccess().getUnorderedGroup_2_0_1(), 4);
                    	    	 				
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1011:6: ({...}? => (otherlv_22= ',' otherlv_23= 'Port' otherlv_24= '=' ( (lv_port_25_0= RULE_STRING ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1011:7: {...}? => (otherlv_22= ',' otherlv_23= 'Port' otherlv_24= '=' ( (lv_port_25_0= RULE_STRING ) ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "true");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1011:16: (otherlv_22= ',' otherlv_23= 'Port' otherlv_24= '=' ( (lv_port_25_0= RULE_STRING ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1011:18: otherlv_22= ',' otherlv_23= 'Port' otherlv_24= '=' ( (lv_port_25_0= RULE_STRING ) )
                    	    {
                    	    otherlv_22=(Token)match(input,28,FOLLOW_28_in_ruleConnection2375); 

                    	        	newLeafNode(otherlv_22, grammarAccess.getConnectionAccess().getCommaKeyword_2_0_1_4_0());
                    	        
                    	    otherlv_23=(Token)match(input,33,FOLLOW_33_in_ruleConnection2387); 

                    	        	newLeafNode(otherlv_23, grammarAccess.getConnectionAccess().getPortKeyword_2_0_1_4_1());
                    	        
                    	    otherlv_24=(Token)match(input,27,FOLLOW_27_in_ruleConnection2399); 

                    	        	newLeafNode(otherlv_24, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_0_1_4_2());
                    	        
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1023:1: ( (lv_port_25_0= RULE_STRING ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1024:1: (lv_port_25_0= RULE_STRING )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1024:1: (lv_port_25_0= RULE_STRING )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1025:3: lv_port_25_0= RULE_STRING
                    	    {
                    	    lv_port_25_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConnection2416); 

                    	    			newLeafNode(lv_port_25_0, grammarAccess.getConnectionAccess().getPortSTRINGTerminalRuleCall_2_0_1_4_3_0()); 
                    	    		

                    	    	        if (current==null) {
                    	    	            current = createModelElement(grammarAccess.getConnectionRule());
                    	    	        }
                    	           		setWithLastConsumed(
                    	           			current, 
                    	           			"port",
                    	            		lv_port_25_0, 
                    	            		"STRING");
                    	    	    

                    	    }


                    	    }


                    	    }


                    	    }

                    	     
                    	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConnectionAccess().getUnorderedGroup_2_0_1());
                    	    	 				

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 6 :
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1048:4: ({...}? => ( ({...}? => (otherlv_26= ',' otherlv_27= 'Pool-Size' otherlv_28= '=' ( (lv_poolsize_29_0= RULE_STRING ) ) ) ) ) )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1048:4: ({...}? => ( ({...}? => (otherlv_26= ',' otherlv_27= 'Pool-Size' otherlv_28= '=' ( (lv_poolsize_29_0= RULE_STRING ) ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1049:5: {...}? => ( ({...}? => (otherlv_26= ',' otherlv_27= 'Pool-Size' otherlv_28= '=' ( (lv_poolsize_29_0= RULE_STRING ) ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_0_1(), 5) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_0_1(), 5)");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1049:111: ( ({...}? => (otherlv_26= ',' otherlv_27= 'Pool-Size' otherlv_28= '=' ( (lv_poolsize_29_0= RULE_STRING ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1050:6: ({...}? => (otherlv_26= ',' otherlv_27= 'Pool-Size' otherlv_28= '=' ( (lv_poolsize_29_0= RULE_STRING ) ) ) )
                    	    {
                    	     
                    	    	 				  getUnorderedGroupHelper().select(grammarAccess.getConnectionAccess().getUnorderedGroup_2_0_1(), 5);
                    	    	 				
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1053:6: ({...}? => (otherlv_26= ',' otherlv_27= 'Pool-Size' otherlv_28= '=' ( (lv_poolsize_29_0= RULE_STRING ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1053:7: {...}? => (otherlv_26= ',' otherlv_27= 'Pool-Size' otherlv_28= '=' ( (lv_poolsize_29_0= RULE_STRING ) ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "true");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1053:16: (otherlv_26= ',' otherlv_27= 'Pool-Size' otherlv_28= '=' ( (lv_poolsize_29_0= RULE_STRING ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1053:18: otherlv_26= ',' otherlv_27= 'Pool-Size' otherlv_28= '=' ( (lv_poolsize_29_0= RULE_STRING ) )
                    	    {
                    	    otherlv_26=(Token)match(input,28,FOLLOW_28_in_ruleConnection2489); 

                    	        	newLeafNode(otherlv_26, grammarAccess.getConnectionAccess().getCommaKeyword_2_0_1_5_0());
                    	        
                    	    otherlv_27=(Token)match(input,34,FOLLOW_34_in_ruleConnection2501); 

                    	        	newLeafNode(otherlv_27, grammarAccess.getConnectionAccess().getPoolSizeKeyword_2_0_1_5_1());
                    	        
                    	    otherlv_28=(Token)match(input,27,FOLLOW_27_in_ruleConnection2513); 

                    	        	newLeafNode(otherlv_28, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_0_1_5_2());
                    	        
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1065:1: ( (lv_poolsize_29_0= RULE_STRING ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1066:1: (lv_poolsize_29_0= RULE_STRING )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1066:1: (lv_poolsize_29_0= RULE_STRING )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1067:3: lv_poolsize_29_0= RULE_STRING
                    	    {
                    	    lv_poolsize_29_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConnection2530); 

                    	    			newLeafNode(lv_poolsize_29_0, grammarAccess.getConnectionAccess().getPoolsizeSTRINGTerminalRuleCall_2_0_1_5_3_0()); 
                    	    		

                    	    	        if (current==null) {
                    	    	            current = createModelElement(grammarAccess.getConnectionRule());
                    	    	        }
                    	           		setWithLastConsumed(
                    	           			current, 
                    	           			"poolsize",
                    	            		lv_poolsize_29_0, 
                    	            		"STRING");
                    	    	    

                    	    }


                    	    }


                    	    }


                    	    }

                    	     
                    	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConnectionAccess().getUnorderedGroup_2_0_1());
                    	    	 				

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt14 >= 1 ) break loop14;
                                EarlyExitException eee =
                                    new EarlyExitException(14, input);
                                throw eee;
                        }
                        cnt14++;
                    } while (true);

                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getConnectionAccess().getUnorderedGroup_2_0_1()) ) {
                        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canLeave(grammarAccess.getConnectionAccess().getUnorderedGroup_2_0_1())");
                    }

                    }


                    }

                     
                    	  getUnorderedGroupHelper().leave(grammarAccess.getConnectionAccess().getUnorderedGroup_2_0_1());
                    	

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1099:6: ( (otherlv_30= 'Database' otherlv_31= '=' ( (lv_dbname_32_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_34= ',' otherlv_35= 'Type' otherlv_36= '=' ( (lv_type_37_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_38= ',' otherlv_39= 'User' otherlv_40= '=' ( (lv_user_41_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_42= ',' otherlv_43= 'Password' otherlv_44= '=' ( (lv_password_45_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_46= ',' otherlv_47= 'URL' otherlv_48= '=' ( (lv_url_49_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_50= ',' otherlv_51= 'Port' otherlv_52= '=' ( (lv_port_53_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_54= ',' otherlv_55= 'Pool-Size' otherlv_56= '=' ( (lv_poolsize_57_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) )
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1099:6: ( (otherlv_30= 'Database' otherlv_31= '=' ( (lv_dbname_32_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_34= ',' otherlv_35= 'Type' otherlv_36= '=' ( (lv_type_37_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_38= ',' otherlv_39= 'User' otherlv_40= '=' ( (lv_user_41_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_42= ',' otherlv_43= 'Password' otherlv_44= '=' ( (lv_password_45_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_46= ',' otherlv_47= 'URL' otherlv_48= '=' ( (lv_url_49_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_50= ',' otherlv_51= 'Port' otherlv_52= '=' ( (lv_port_53_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_54= ',' otherlv_55= 'Pool-Size' otherlv_56= '=' ( (lv_poolsize_57_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1099:7: (otherlv_30= 'Database' otherlv_31= '=' ( (lv_dbname_32_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_34= ',' otherlv_35= 'Type' otherlv_36= '=' ( (lv_type_37_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_38= ',' otherlv_39= 'User' otherlv_40= '=' ( (lv_user_41_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_42= ',' otherlv_43= 'Password' otherlv_44= '=' ( (lv_password_45_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_46= ',' otherlv_47= 'URL' otherlv_48= '=' ( (lv_url_49_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_50= ',' otherlv_51= 'Port' otherlv_52= '=' ( (lv_port_53_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_54= ',' otherlv_55= 'Pool-Size' otherlv_56= '=' ( (lv_poolsize_57_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) )
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1099:7: (otherlv_30= 'Database' otherlv_31= '=' ( (lv_dbname_32_0= RULE_STRING ) ) )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1099:9: otherlv_30= 'Database' otherlv_31= '=' ( (lv_dbname_32_0= RULE_STRING ) )
                    {
                    otherlv_30=(Token)match(input,29,FOLLOW_29_in_ruleConnection2603); 

                        	newLeafNode(otherlv_30, grammarAccess.getConnectionAccess().getDatabaseKeyword_2_1_0_0());
                        
                    otherlv_31=(Token)match(input,27,FOLLOW_27_in_ruleConnection2615); 

                        	newLeafNode(otherlv_31, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_1_0_1());
                        
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1107:1: ( (lv_dbname_32_0= RULE_STRING ) )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1108:1: (lv_dbname_32_0= RULE_STRING )
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1108:1: (lv_dbname_32_0= RULE_STRING )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1109:3: lv_dbname_32_0= RULE_STRING
                    {
                    lv_dbname_32_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConnection2632); 

                    			newLeafNode(lv_dbname_32_0, grammarAccess.getConnectionAccess().getDbnameSTRINGTerminalRuleCall_2_1_0_2_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getConnectionRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"dbname",
                            		lv_dbname_32_0, 
                            		"STRING");
                    	    

                    }


                    }


                    }

                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1125:3: ( ( ( ( ({...}? => ( ({...}? => (otherlv_34= ',' otherlv_35= 'Type' otherlv_36= '=' ( (lv_type_37_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_38= ',' otherlv_39= 'User' otherlv_40= '=' ( (lv_user_41_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_42= ',' otherlv_43= 'Password' otherlv_44= '=' ( (lv_password_45_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_46= ',' otherlv_47= 'URL' otherlv_48= '=' ( (lv_url_49_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_50= ',' otherlv_51= 'Port' otherlv_52= '=' ( (lv_port_53_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_54= ',' otherlv_55= 'Pool-Size' otherlv_56= '=' ( (lv_poolsize_57_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1127:1: ( ( ( ({...}? => ( ({...}? => (otherlv_34= ',' otherlv_35= 'Type' otherlv_36= '=' ( (lv_type_37_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_38= ',' otherlv_39= 'User' otherlv_40= '=' ( (lv_user_41_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_42= ',' otherlv_43= 'Password' otherlv_44= '=' ( (lv_password_45_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_46= ',' otherlv_47= 'URL' otherlv_48= '=' ( (lv_url_49_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_50= ',' otherlv_51= 'Port' otherlv_52= '=' ( (lv_port_53_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_54= ',' otherlv_55= 'Pool-Size' otherlv_56= '=' ( (lv_poolsize_57_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) )
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1127:1: ( ( ( ({...}? => ( ({...}? => (otherlv_34= ',' otherlv_35= 'Type' otherlv_36= '=' ( (lv_type_37_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_38= ',' otherlv_39= 'User' otherlv_40= '=' ( (lv_user_41_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_42= ',' otherlv_43= 'Password' otherlv_44= '=' ( (lv_password_45_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_46= ',' otherlv_47= 'URL' otherlv_48= '=' ( (lv_url_49_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_50= ',' otherlv_51= 'Port' otherlv_52= '=' ( (lv_port_53_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_54= ',' otherlv_55= 'Pool-Size' otherlv_56= '=' ( (lv_poolsize_57_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1128:2: ( ( ({...}? => ( ({...}? => (otherlv_34= ',' otherlv_35= 'Type' otherlv_36= '=' ( (lv_type_37_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_38= ',' otherlv_39= 'User' otherlv_40= '=' ( (lv_user_41_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_42= ',' otherlv_43= 'Password' otherlv_44= '=' ( (lv_password_45_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_46= ',' otherlv_47= 'URL' otherlv_48= '=' ( (lv_url_49_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_50= ',' otherlv_51= 'Port' otherlv_52= '=' ( (lv_port_53_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_54= ',' otherlv_55= 'Pool-Size' otherlv_56= '=' ( (lv_poolsize_57_0= RULE_STRING ) ) ) ) ) ) )+ {...}?)
                    {
                     
                    	  getUnorderedGroupHelper().enter(grammarAccess.getConnectionAccess().getUnorderedGroup_2_1_1());
                    	
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1131:2: ( ( ({...}? => ( ({...}? => (otherlv_34= ',' otherlv_35= 'Type' otherlv_36= '=' ( (lv_type_37_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_38= ',' otherlv_39= 'User' otherlv_40= '=' ( (lv_user_41_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_42= ',' otherlv_43= 'Password' otherlv_44= '=' ( (lv_password_45_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_46= ',' otherlv_47= 'URL' otherlv_48= '=' ( (lv_url_49_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_50= ',' otherlv_51= 'Port' otherlv_52= '=' ( (lv_port_53_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_54= ',' otherlv_55= 'Pool-Size' otherlv_56= '=' ( (lv_poolsize_57_0= RULE_STRING ) ) ) ) ) ) )+ {...}?)
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1132:3: ( ({...}? => ( ({...}? => (otherlv_34= ',' otherlv_35= 'Type' otherlv_36= '=' ( (lv_type_37_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_38= ',' otherlv_39= 'User' otherlv_40= '=' ( (lv_user_41_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_42= ',' otherlv_43= 'Password' otherlv_44= '=' ( (lv_password_45_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_46= ',' otherlv_47= 'URL' otherlv_48= '=' ( (lv_url_49_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_50= ',' otherlv_51= 'Port' otherlv_52= '=' ( (lv_port_53_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_54= ',' otherlv_55= 'Pool-Size' otherlv_56= '=' ( (lv_poolsize_57_0= RULE_STRING ) ) ) ) ) ) )+ {...}?
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1132:3: ( ({...}? => ( ({...}? => (otherlv_34= ',' otherlv_35= 'Type' otherlv_36= '=' ( (lv_type_37_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_38= ',' otherlv_39= 'User' otherlv_40= '=' ( (lv_user_41_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_42= ',' otherlv_43= 'Password' otherlv_44= '=' ( (lv_password_45_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_46= ',' otherlv_47= 'URL' otherlv_48= '=' ( (lv_url_49_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_50= ',' otherlv_51= 'Port' otherlv_52= '=' ( (lv_port_53_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_54= ',' otherlv_55= 'Pool-Size' otherlv_56= '=' ( (lv_poolsize_57_0= RULE_STRING ) ) ) ) ) ) )+
                    int cnt15=0;
                    loop15:
                    do {
                        int alt15=7;
                        int LA15_0 = input.LA(1);

                        if ( LA15_0 ==28 && ( getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_1_1(), 1) || getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_1_1(), 0) || getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_1_1(), 5) || getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_1_1(), 4) || getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_1_1(), 3) || getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_1_1(), 2) ) ) {
                            int LA15_2 = input.LA(2);

                            if ( LA15_2 ==33 && getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_1_1(), 4) ) {
                                alt15=5;
                            }
                            else if ( LA15_2 ==34 && getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_1_1(), 5) ) {
                                alt15=6;
                            }
                            else if ( LA15_2 ==31 && getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_1_1(), 2) ) {
                                alt15=3;
                            }
                            else if ( LA15_2 ==32 && getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_1_1(), 3) ) {
                                alt15=4;
                            }
                            else if ( LA15_2 ==30 && getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_1_1(), 1) ) {
                                alt15=2;
                            }
                            else if ( LA15_2 ==26 && getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_1_1(), 0) ) {
                                alt15=1;
                            }


                        }


                        switch (alt15) {
                    	case 1 :
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1134:4: ({...}? => ( ({...}? => (otherlv_34= ',' otherlv_35= 'Type' otherlv_36= '=' ( (lv_type_37_0= ruleDataBase ) ) ) ) ) )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1134:4: ({...}? => ( ({...}? => (otherlv_34= ',' otherlv_35= 'Type' otherlv_36= '=' ( (lv_type_37_0= ruleDataBase ) ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1135:5: {...}? => ( ({...}? => (otherlv_34= ',' otherlv_35= 'Type' otherlv_36= '=' ( (lv_type_37_0= ruleDataBase ) ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_1_1(), 0) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_1_1(), 0)");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1135:111: ( ({...}? => (otherlv_34= ',' otherlv_35= 'Type' otherlv_36= '=' ( (lv_type_37_0= ruleDataBase ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1136:6: ({...}? => (otherlv_34= ',' otherlv_35= 'Type' otherlv_36= '=' ( (lv_type_37_0= ruleDataBase ) ) ) )
                    	    {
                    	     
                    	    	 				  getUnorderedGroupHelper().select(grammarAccess.getConnectionAccess().getUnorderedGroup_2_1_1(), 0);
                    	    	 				
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1139:6: ({...}? => (otherlv_34= ',' otherlv_35= 'Type' otherlv_36= '=' ( (lv_type_37_0= ruleDataBase ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1139:7: {...}? => (otherlv_34= ',' otherlv_35= 'Type' otherlv_36= '=' ( (lv_type_37_0= ruleDataBase ) ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "true");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1139:16: (otherlv_34= ',' otherlv_35= 'Type' otherlv_36= '=' ( (lv_type_37_0= ruleDataBase ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1139:18: otherlv_34= ',' otherlv_35= 'Type' otherlv_36= '=' ( (lv_type_37_0= ruleDataBase ) )
                    	    {
                    	    otherlv_34=(Token)match(input,28,FOLLOW_28_in_ruleConnection2696); 

                    	        	newLeafNode(otherlv_34, grammarAccess.getConnectionAccess().getCommaKeyword_2_1_1_0_0());
                    	        
                    	    otherlv_35=(Token)match(input,26,FOLLOW_26_in_ruleConnection2708); 

                    	        	newLeafNode(otherlv_35, grammarAccess.getConnectionAccess().getTypeKeyword_2_1_1_0_1());
                    	        
                    	    otherlv_36=(Token)match(input,27,FOLLOW_27_in_ruleConnection2720); 

                    	        	newLeafNode(otherlv_36, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_1_1_0_2());
                    	        
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1151:1: ( (lv_type_37_0= ruleDataBase ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1152:1: (lv_type_37_0= ruleDataBase )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1152:1: (lv_type_37_0= ruleDataBase )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1153:3: lv_type_37_0= ruleDataBase
                    	    {
                    	     
                    	    	        newCompositeNode(grammarAccess.getConnectionAccess().getTypeDataBaseParserRuleCall_2_1_1_0_3_0()); 
                    	    	    
                    	    pushFollow(FOLLOW_ruleDataBase_in_ruleConnection2741);
                    	    lv_type_37_0=ruleDataBase();

                    	    state._fsp--;


                    	    	        if (current==null) {
                    	    	            current = createModelElementForParent(grammarAccess.getConnectionRule());
                    	    	        }
                    	           		set(
                    	           			current, 
                    	           			"type",
                    	            		lv_type_37_0, 
                    	            		"DataBase");
                    	    	        afterParserOrEnumRuleCall();
                    	    	    

                    	    }


                    	    }


                    	    }


                    	    }

                    	     
                    	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConnectionAccess().getUnorderedGroup_2_1_1());
                    	    	 				

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 2 :
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1176:4: ({...}? => ( ({...}? => (otherlv_38= ',' otherlv_39= 'User' otherlv_40= '=' ( (lv_user_41_0= RULE_STRING ) ) ) ) ) )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1176:4: ({...}? => ( ({...}? => (otherlv_38= ',' otherlv_39= 'User' otherlv_40= '=' ( (lv_user_41_0= RULE_STRING ) ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1177:5: {...}? => ( ({...}? => (otherlv_38= ',' otherlv_39= 'User' otherlv_40= '=' ( (lv_user_41_0= RULE_STRING ) ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_1_1(), 1) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_1_1(), 1)");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1177:111: ( ({...}? => (otherlv_38= ',' otherlv_39= 'User' otherlv_40= '=' ( (lv_user_41_0= RULE_STRING ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1178:6: ({...}? => (otherlv_38= ',' otherlv_39= 'User' otherlv_40= '=' ( (lv_user_41_0= RULE_STRING ) ) ) )
                    	    {
                    	     
                    	    	 				  getUnorderedGroupHelper().select(grammarAccess.getConnectionAccess().getUnorderedGroup_2_1_1(), 1);
                    	    	 				
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1181:6: ({...}? => (otherlv_38= ',' otherlv_39= 'User' otherlv_40= '=' ( (lv_user_41_0= RULE_STRING ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1181:7: {...}? => (otherlv_38= ',' otherlv_39= 'User' otherlv_40= '=' ( (lv_user_41_0= RULE_STRING ) ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "true");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1181:16: (otherlv_38= ',' otherlv_39= 'User' otherlv_40= '=' ( (lv_user_41_0= RULE_STRING ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1181:18: otherlv_38= ',' otherlv_39= 'User' otherlv_40= '=' ( (lv_user_41_0= RULE_STRING ) )
                    	    {
                    	    otherlv_38=(Token)match(input,28,FOLLOW_28_in_ruleConnection2809); 

                    	        	newLeafNode(otherlv_38, grammarAccess.getConnectionAccess().getCommaKeyword_2_1_1_1_0());
                    	        
                    	    otherlv_39=(Token)match(input,30,FOLLOW_30_in_ruleConnection2821); 

                    	        	newLeafNode(otherlv_39, grammarAccess.getConnectionAccess().getUserKeyword_2_1_1_1_1());
                    	        
                    	    otherlv_40=(Token)match(input,27,FOLLOW_27_in_ruleConnection2833); 

                    	        	newLeafNode(otherlv_40, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_1_1_1_2());
                    	        
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1193:1: ( (lv_user_41_0= RULE_STRING ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1194:1: (lv_user_41_0= RULE_STRING )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1194:1: (lv_user_41_0= RULE_STRING )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1195:3: lv_user_41_0= RULE_STRING
                    	    {
                    	    lv_user_41_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConnection2850); 

                    	    			newLeafNode(lv_user_41_0, grammarAccess.getConnectionAccess().getUserSTRINGTerminalRuleCall_2_1_1_1_3_0()); 
                    	    		

                    	    	        if (current==null) {
                    	    	            current = createModelElement(grammarAccess.getConnectionRule());
                    	    	        }
                    	           		setWithLastConsumed(
                    	           			current, 
                    	           			"user",
                    	            		lv_user_41_0, 
                    	            		"STRING");
                    	    	    

                    	    }


                    	    }


                    	    }


                    	    }

                    	     
                    	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConnectionAccess().getUnorderedGroup_2_1_1());
                    	    	 				

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 3 :
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1218:4: ({...}? => ( ({...}? => (otherlv_42= ',' otherlv_43= 'Password' otherlv_44= '=' ( (lv_password_45_0= RULE_STRING ) ) ) ) ) )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1218:4: ({...}? => ( ({...}? => (otherlv_42= ',' otherlv_43= 'Password' otherlv_44= '=' ( (lv_password_45_0= RULE_STRING ) ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1219:5: {...}? => ( ({...}? => (otherlv_42= ',' otherlv_43= 'Password' otherlv_44= '=' ( (lv_password_45_0= RULE_STRING ) ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_1_1(), 2) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_1_1(), 2)");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1219:111: ( ({...}? => (otherlv_42= ',' otherlv_43= 'Password' otherlv_44= '=' ( (lv_password_45_0= RULE_STRING ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1220:6: ({...}? => (otherlv_42= ',' otherlv_43= 'Password' otherlv_44= '=' ( (lv_password_45_0= RULE_STRING ) ) ) )
                    	    {
                    	     
                    	    	 				  getUnorderedGroupHelper().select(grammarAccess.getConnectionAccess().getUnorderedGroup_2_1_1(), 2);
                    	    	 				
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1223:6: ({...}? => (otherlv_42= ',' otherlv_43= 'Password' otherlv_44= '=' ( (lv_password_45_0= RULE_STRING ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1223:7: {...}? => (otherlv_42= ',' otherlv_43= 'Password' otherlv_44= '=' ( (lv_password_45_0= RULE_STRING ) ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "true");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1223:16: (otherlv_42= ',' otherlv_43= 'Password' otherlv_44= '=' ( (lv_password_45_0= RULE_STRING ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1223:18: otherlv_42= ',' otherlv_43= 'Password' otherlv_44= '=' ( (lv_password_45_0= RULE_STRING ) )
                    	    {
                    	    otherlv_42=(Token)match(input,28,FOLLOW_28_in_ruleConnection2923); 

                    	        	newLeafNode(otherlv_42, grammarAccess.getConnectionAccess().getCommaKeyword_2_1_1_2_0());
                    	        
                    	    otherlv_43=(Token)match(input,31,FOLLOW_31_in_ruleConnection2935); 

                    	        	newLeafNode(otherlv_43, grammarAccess.getConnectionAccess().getPasswordKeyword_2_1_1_2_1());
                    	        
                    	    otherlv_44=(Token)match(input,27,FOLLOW_27_in_ruleConnection2947); 

                    	        	newLeafNode(otherlv_44, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_1_1_2_2());
                    	        
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1235:1: ( (lv_password_45_0= RULE_STRING ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1236:1: (lv_password_45_0= RULE_STRING )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1236:1: (lv_password_45_0= RULE_STRING )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1237:3: lv_password_45_0= RULE_STRING
                    	    {
                    	    lv_password_45_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConnection2964); 

                    	    			newLeafNode(lv_password_45_0, grammarAccess.getConnectionAccess().getPasswordSTRINGTerminalRuleCall_2_1_1_2_3_0()); 
                    	    		

                    	    	        if (current==null) {
                    	    	            current = createModelElement(grammarAccess.getConnectionRule());
                    	    	        }
                    	           		setWithLastConsumed(
                    	           			current, 
                    	           			"password",
                    	            		lv_password_45_0, 
                    	            		"STRING");
                    	    	    

                    	    }


                    	    }


                    	    }


                    	    }

                    	     
                    	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConnectionAccess().getUnorderedGroup_2_1_1());
                    	    	 				

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 4 :
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1260:4: ({...}? => ( ({...}? => (otherlv_46= ',' otherlv_47= 'URL' otherlv_48= '=' ( (lv_url_49_0= RULE_STRING ) ) ) ) ) )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1260:4: ({...}? => ( ({...}? => (otherlv_46= ',' otherlv_47= 'URL' otherlv_48= '=' ( (lv_url_49_0= RULE_STRING ) ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1261:5: {...}? => ( ({...}? => (otherlv_46= ',' otherlv_47= 'URL' otherlv_48= '=' ( (lv_url_49_0= RULE_STRING ) ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_1_1(), 3) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_1_1(), 3)");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1261:111: ( ({...}? => (otherlv_46= ',' otherlv_47= 'URL' otherlv_48= '=' ( (lv_url_49_0= RULE_STRING ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1262:6: ({...}? => (otherlv_46= ',' otherlv_47= 'URL' otherlv_48= '=' ( (lv_url_49_0= RULE_STRING ) ) ) )
                    	    {
                    	     
                    	    	 				  getUnorderedGroupHelper().select(grammarAccess.getConnectionAccess().getUnorderedGroup_2_1_1(), 3);
                    	    	 				
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1265:6: ({...}? => (otherlv_46= ',' otherlv_47= 'URL' otherlv_48= '=' ( (lv_url_49_0= RULE_STRING ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1265:7: {...}? => (otherlv_46= ',' otherlv_47= 'URL' otherlv_48= '=' ( (lv_url_49_0= RULE_STRING ) ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "true");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1265:16: (otherlv_46= ',' otherlv_47= 'URL' otherlv_48= '=' ( (lv_url_49_0= RULE_STRING ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1265:18: otherlv_46= ',' otherlv_47= 'URL' otherlv_48= '=' ( (lv_url_49_0= RULE_STRING ) )
                    	    {
                    	    otherlv_46=(Token)match(input,28,FOLLOW_28_in_ruleConnection3037); 

                    	        	newLeafNode(otherlv_46, grammarAccess.getConnectionAccess().getCommaKeyword_2_1_1_3_0());
                    	        
                    	    otherlv_47=(Token)match(input,32,FOLLOW_32_in_ruleConnection3049); 

                    	        	newLeafNode(otherlv_47, grammarAccess.getConnectionAccess().getURLKeyword_2_1_1_3_1());
                    	        
                    	    otherlv_48=(Token)match(input,27,FOLLOW_27_in_ruleConnection3061); 

                    	        	newLeafNode(otherlv_48, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_1_1_3_2());
                    	        
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1277:1: ( (lv_url_49_0= RULE_STRING ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1278:1: (lv_url_49_0= RULE_STRING )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1278:1: (lv_url_49_0= RULE_STRING )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1279:3: lv_url_49_0= RULE_STRING
                    	    {
                    	    lv_url_49_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConnection3078); 

                    	    			newLeafNode(lv_url_49_0, grammarAccess.getConnectionAccess().getUrlSTRINGTerminalRuleCall_2_1_1_3_3_0()); 
                    	    		

                    	    	        if (current==null) {
                    	    	            current = createModelElement(grammarAccess.getConnectionRule());
                    	    	        }
                    	           		setWithLastConsumed(
                    	           			current, 
                    	           			"url",
                    	            		lv_url_49_0, 
                    	            		"STRING");
                    	    	    

                    	    }


                    	    }


                    	    }


                    	    }

                    	     
                    	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConnectionAccess().getUnorderedGroup_2_1_1());
                    	    	 				

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 5 :
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1302:4: ({...}? => ( ({...}? => (otherlv_50= ',' otherlv_51= 'Port' otherlv_52= '=' ( (lv_port_53_0= RULE_STRING ) ) ) ) ) )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1302:4: ({...}? => ( ({...}? => (otherlv_50= ',' otherlv_51= 'Port' otherlv_52= '=' ( (lv_port_53_0= RULE_STRING ) ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1303:5: {...}? => ( ({...}? => (otherlv_50= ',' otherlv_51= 'Port' otherlv_52= '=' ( (lv_port_53_0= RULE_STRING ) ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_1_1(), 4) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_1_1(), 4)");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1303:111: ( ({...}? => (otherlv_50= ',' otherlv_51= 'Port' otherlv_52= '=' ( (lv_port_53_0= RULE_STRING ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1304:6: ({...}? => (otherlv_50= ',' otherlv_51= 'Port' otherlv_52= '=' ( (lv_port_53_0= RULE_STRING ) ) ) )
                    	    {
                    	     
                    	    	 				  getUnorderedGroupHelper().select(grammarAccess.getConnectionAccess().getUnorderedGroup_2_1_1(), 4);
                    	    	 				
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1307:6: ({...}? => (otherlv_50= ',' otherlv_51= 'Port' otherlv_52= '=' ( (lv_port_53_0= RULE_STRING ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1307:7: {...}? => (otherlv_50= ',' otherlv_51= 'Port' otherlv_52= '=' ( (lv_port_53_0= RULE_STRING ) ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "true");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1307:16: (otherlv_50= ',' otherlv_51= 'Port' otherlv_52= '=' ( (lv_port_53_0= RULE_STRING ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1307:18: otherlv_50= ',' otherlv_51= 'Port' otherlv_52= '=' ( (lv_port_53_0= RULE_STRING ) )
                    	    {
                    	    otherlv_50=(Token)match(input,28,FOLLOW_28_in_ruleConnection3151); 

                    	        	newLeafNode(otherlv_50, grammarAccess.getConnectionAccess().getCommaKeyword_2_1_1_4_0());
                    	        
                    	    otherlv_51=(Token)match(input,33,FOLLOW_33_in_ruleConnection3163); 

                    	        	newLeafNode(otherlv_51, grammarAccess.getConnectionAccess().getPortKeyword_2_1_1_4_1());
                    	        
                    	    otherlv_52=(Token)match(input,27,FOLLOW_27_in_ruleConnection3175); 

                    	        	newLeafNode(otherlv_52, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_1_1_4_2());
                    	        
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1319:1: ( (lv_port_53_0= RULE_STRING ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1320:1: (lv_port_53_0= RULE_STRING )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1320:1: (lv_port_53_0= RULE_STRING )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1321:3: lv_port_53_0= RULE_STRING
                    	    {
                    	    lv_port_53_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConnection3192); 

                    	    			newLeafNode(lv_port_53_0, grammarAccess.getConnectionAccess().getPortSTRINGTerminalRuleCall_2_1_1_4_3_0()); 
                    	    		

                    	    	        if (current==null) {
                    	    	            current = createModelElement(grammarAccess.getConnectionRule());
                    	    	        }
                    	           		setWithLastConsumed(
                    	           			current, 
                    	           			"port",
                    	            		lv_port_53_0, 
                    	            		"STRING");
                    	    	    

                    	    }


                    	    }


                    	    }


                    	    }

                    	     
                    	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConnectionAccess().getUnorderedGroup_2_1_1());
                    	    	 				

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 6 :
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1344:4: ({...}? => ( ({...}? => (otherlv_54= ',' otherlv_55= 'Pool-Size' otherlv_56= '=' ( (lv_poolsize_57_0= RULE_STRING ) ) ) ) ) )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1344:4: ({...}? => ( ({...}? => (otherlv_54= ',' otherlv_55= 'Pool-Size' otherlv_56= '=' ( (lv_poolsize_57_0= RULE_STRING ) ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1345:5: {...}? => ( ({...}? => (otherlv_54= ',' otherlv_55= 'Pool-Size' otherlv_56= '=' ( (lv_poolsize_57_0= RULE_STRING ) ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_1_1(), 5) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_1_1(), 5)");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1345:111: ( ({...}? => (otherlv_54= ',' otherlv_55= 'Pool-Size' otherlv_56= '=' ( (lv_poolsize_57_0= RULE_STRING ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1346:6: ({...}? => (otherlv_54= ',' otherlv_55= 'Pool-Size' otherlv_56= '=' ( (lv_poolsize_57_0= RULE_STRING ) ) ) )
                    	    {
                    	     
                    	    	 				  getUnorderedGroupHelper().select(grammarAccess.getConnectionAccess().getUnorderedGroup_2_1_1(), 5);
                    	    	 				
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1349:6: ({...}? => (otherlv_54= ',' otherlv_55= 'Pool-Size' otherlv_56= '=' ( (lv_poolsize_57_0= RULE_STRING ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1349:7: {...}? => (otherlv_54= ',' otherlv_55= 'Pool-Size' otherlv_56= '=' ( (lv_poolsize_57_0= RULE_STRING ) ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "true");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1349:16: (otherlv_54= ',' otherlv_55= 'Pool-Size' otherlv_56= '=' ( (lv_poolsize_57_0= RULE_STRING ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1349:18: otherlv_54= ',' otherlv_55= 'Pool-Size' otherlv_56= '=' ( (lv_poolsize_57_0= RULE_STRING ) )
                    	    {
                    	    otherlv_54=(Token)match(input,28,FOLLOW_28_in_ruleConnection3265); 

                    	        	newLeafNode(otherlv_54, grammarAccess.getConnectionAccess().getCommaKeyword_2_1_1_5_0());
                    	        
                    	    otherlv_55=(Token)match(input,34,FOLLOW_34_in_ruleConnection3277); 

                    	        	newLeafNode(otherlv_55, grammarAccess.getConnectionAccess().getPoolSizeKeyword_2_1_1_5_1());
                    	        
                    	    otherlv_56=(Token)match(input,27,FOLLOW_27_in_ruleConnection3289); 

                    	        	newLeafNode(otherlv_56, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_1_1_5_2());
                    	        
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1361:1: ( (lv_poolsize_57_0= RULE_STRING ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1362:1: (lv_poolsize_57_0= RULE_STRING )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1362:1: (lv_poolsize_57_0= RULE_STRING )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1363:3: lv_poolsize_57_0= RULE_STRING
                    	    {
                    	    lv_poolsize_57_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConnection3306); 

                    	    			newLeafNode(lv_poolsize_57_0, grammarAccess.getConnectionAccess().getPoolsizeSTRINGTerminalRuleCall_2_1_1_5_3_0()); 
                    	    		

                    	    	        if (current==null) {
                    	    	            current = createModelElement(grammarAccess.getConnectionRule());
                    	    	        }
                    	           		setWithLastConsumed(
                    	           			current, 
                    	           			"poolsize",
                    	            		lv_poolsize_57_0, 
                    	            		"STRING");
                    	    	    

                    	    }


                    	    }


                    	    }


                    	    }

                    	     
                    	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConnectionAccess().getUnorderedGroup_2_1_1());
                    	    	 				

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt15 >= 1 ) break loop15;
                                EarlyExitException eee =
                                    new EarlyExitException(15, input);
                                throw eee;
                        }
                        cnt15++;
                    } while (true);

                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getConnectionAccess().getUnorderedGroup_2_1_1()) ) {
                        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canLeave(grammarAccess.getConnectionAccess().getUnorderedGroup_2_1_1())");
                    }

                    }


                    }

                     
                    	  getUnorderedGroupHelper().leave(grammarAccess.getConnectionAccess().getUnorderedGroup_2_1_1());
                    	

                    }


                    }


                    }
                    break;
                case 3 :
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1395:6: ( (otherlv_58= 'User' otherlv_59= '=' ( (lv_user_60_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_62= ',' otherlv_63= 'Type' otherlv_64= '=' ( (lv_type_65_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_66= ',' otherlv_67= 'Database' otherlv_68= '=' ( (lv_dbname_69_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_70= ',' otherlv_71= 'Password' otherlv_72= '=' ( (lv_password_73_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_74= ',' otherlv_75= 'URL' otherlv_76= '=' ( (lv_url_77_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_78= ',' otherlv_79= 'Port' otherlv_80= '=' ( (lv_port_81_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_82= ',' otherlv_83= 'Pool-Size' otherlv_84= '=' ( (lv_poolsize_85_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) )
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1395:6: ( (otherlv_58= 'User' otherlv_59= '=' ( (lv_user_60_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_62= ',' otherlv_63= 'Type' otherlv_64= '=' ( (lv_type_65_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_66= ',' otherlv_67= 'Database' otherlv_68= '=' ( (lv_dbname_69_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_70= ',' otherlv_71= 'Password' otherlv_72= '=' ( (lv_password_73_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_74= ',' otherlv_75= 'URL' otherlv_76= '=' ( (lv_url_77_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_78= ',' otherlv_79= 'Port' otherlv_80= '=' ( (lv_port_81_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_82= ',' otherlv_83= 'Pool-Size' otherlv_84= '=' ( (lv_poolsize_85_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1395:7: (otherlv_58= 'User' otherlv_59= '=' ( (lv_user_60_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_62= ',' otherlv_63= 'Type' otherlv_64= '=' ( (lv_type_65_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_66= ',' otherlv_67= 'Database' otherlv_68= '=' ( (lv_dbname_69_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_70= ',' otherlv_71= 'Password' otherlv_72= '=' ( (lv_password_73_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_74= ',' otherlv_75= 'URL' otherlv_76= '=' ( (lv_url_77_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_78= ',' otherlv_79= 'Port' otherlv_80= '=' ( (lv_port_81_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_82= ',' otherlv_83= 'Pool-Size' otherlv_84= '=' ( (lv_poolsize_85_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) )
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1395:7: (otherlv_58= 'User' otherlv_59= '=' ( (lv_user_60_0= RULE_STRING ) ) )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1395:9: otherlv_58= 'User' otherlv_59= '=' ( (lv_user_60_0= RULE_STRING ) )
                    {
                    otherlv_58=(Token)match(input,30,FOLLOW_30_in_ruleConnection3379); 

                        	newLeafNode(otherlv_58, grammarAccess.getConnectionAccess().getUserKeyword_2_2_0_0());
                        
                    otherlv_59=(Token)match(input,27,FOLLOW_27_in_ruleConnection3391); 

                        	newLeafNode(otherlv_59, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_2_0_1());
                        
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1403:1: ( (lv_user_60_0= RULE_STRING ) )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1404:1: (lv_user_60_0= RULE_STRING )
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1404:1: (lv_user_60_0= RULE_STRING )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1405:3: lv_user_60_0= RULE_STRING
                    {
                    lv_user_60_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConnection3408); 

                    			newLeafNode(lv_user_60_0, grammarAccess.getConnectionAccess().getUserSTRINGTerminalRuleCall_2_2_0_2_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getConnectionRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"user",
                            		lv_user_60_0, 
                            		"STRING");
                    	    

                    }


                    }


                    }

                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1421:3: ( ( ( ( ({...}? => ( ({...}? => (otherlv_62= ',' otherlv_63= 'Type' otherlv_64= '=' ( (lv_type_65_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_66= ',' otherlv_67= 'Database' otherlv_68= '=' ( (lv_dbname_69_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_70= ',' otherlv_71= 'Password' otherlv_72= '=' ( (lv_password_73_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_74= ',' otherlv_75= 'URL' otherlv_76= '=' ( (lv_url_77_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_78= ',' otherlv_79= 'Port' otherlv_80= '=' ( (lv_port_81_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_82= ',' otherlv_83= 'Pool-Size' otherlv_84= '=' ( (lv_poolsize_85_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1423:1: ( ( ( ({...}? => ( ({...}? => (otherlv_62= ',' otherlv_63= 'Type' otherlv_64= '=' ( (lv_type_65_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_66= ',' otherlv_67= 'Database' otherlv_68= '=' ( (lv_dbname_69_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_70= ',' otherlv_71= 'Password' otherlv_72= '=' ( (lv_password_73_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_74= ',' otherlv_75= 'URL' otherlv_76= '=' ( (lv_url_77_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_78= ',' otherlv_79= 'Port' otherlv_80= '=' ( (lv_port_81_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_82= ',' otherlv_83= 'Pool-Size' otherlv_84= '=' ( (lv_poolsize_85_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) )
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1423:1: ( ( ( ({...}? => ( ({...}? => (otherlv_62= ',' otherlv_63= 'Type' otherlv_64= '=' ( (lv_type_65_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_66= ',' otherlv_67= 'Database' otherlv_68= '=' ( (lv_dbname_69_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_70= ',' otherlv_71= 'Password' otherlv_72= '=' ( (lv_password_73_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_74= ',' otherlv_75= 'URL' otherlv_76= '=' ( (lv_url_77_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_78= ',' otherlv_79= 'Port' otherlv_80= '=' ( (lv_port_81_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_82= ',' otherlv_83= 'Pool-Size' otherlv_84= '=' ( (lv_poolsize_85_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1424:2: ( ( ({...}? => ( ({...}? => (otherlv_62= ',' otherlv_63= 'Type' otherlv_64= '=' ( (lv_type_65_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_66= ',' otherlv_67= 'Database' otherlv_68= '=' ( (lv_dbname_69_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_70= ',' otherlv_71= 'Password' otherlv_72= '=' ( (lv_password_73_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_74= ',' otherlv_75= 'URL' otherlv_76= '=' ( (lv_url_77_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_78= ',' otherlv_79= 'Port' otherlv_80= '=' ( (lv_port_81_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_82= ',' otherlv_83= 'Pool-Size' otherlv_84= '=' ( (lv_poolsize_85_0= RULE_STRING ) ) ) ) ) ) )+ {...}?)
                    {
                     
                    	  getUnorderedGroupHelper().enter(grammarAccess.getConnectionAccess().getUnorderedGroup_2_2_1());
                    	
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1427:2: ( ( ({...}? => ( ({...}? => (otherlv_62= ',' otherlv_63= 'Type' otherlv_64= '=' ( (lv_type_65_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_66= ',' otherlv_67= 'Database' otherlv_68= '=' ( (lv_dbname_69_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_70= ',' otherlv_71= 'Password' otherlv_72= '=' ( (lv_password_73_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_74= ',' otherlv_75= 'URL' otherlv_76= '=' ( (lv_url_77_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_78= ',' otherlv_79= 'Port' otherlv_80= '=' ( (lv_port_81_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_82= ',' otherlv_83= 'Pool-Size' otherlv_84= '=' ( (lv_poolsize_85_0= RULE_STRING ) ) ) ) ) ) )+ {...}?)
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1428:3: ( ({...}? => ( ({...}? => (otherlv_62= ',' otherlv_63= 'Type' otherlv_64= '=' ( (lv_type_65_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_66= ',' otherlv_67= 'Database' otherlv_68= '=' ( (lv_dbname_69_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_70= ',' otherlv_71= 'Password' otherlv_72= '=' ( (lv_password_73_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_74= ',' otherlv_75= 'URL' otherlv_76= '=' ( (lv_url_77_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_78= ',' otherlv_79= 'Port' otherlv_80= '=' ( (lv_port_81_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_82= ',' otherlv_83= 'Pool-Size' otherlv_84= '=' ( (lv_poolsize_85_0= RULE_STRING ) ) ) ) ) ) )+ {...}?
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1428:3: ( ({...}? => ( ({...}? => (otherlv_62= ',' otherlv_63= 'Type' otherlv_64= '=' ( (lv_type_65_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_66= ',' otherlv_67= 'Database' otherlv_68= '=' ( (lv_dbname_69_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_70= ',' otherlv_71= 'Password' otherlv_72= '=' ( (lv_password_73_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_74= ',' otherlv_75= 'URL' otherlv_76= '=' ( (lv_url_77_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_78= ',' otherlv_79= 'Port' otherlv_80= '=' ( (lv_port_81_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_82= ',' otherlv_83= 'Pool-Size' otherlv_84= '=' ( (lv_poolsize_85_0= RULE_STRING ) ) ) ) ) ) )+
                    int cnt16=0;
                    loop16:
                    do {
                        int alt16=7;
                        int LA16_0 = input.LA(1);

                        if ( LA16_0 ==28 && ( getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_2_1(), 1) || getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_2_1(), 0) || getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_2_1(), 5) || getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_2_1(), 4) || getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_2_1(), 2) || getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_2_1(), 3) ) ) {
                            int LA16_2 = input.LA(2);

                            if ( LA16_2 ==34 && getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_2_1(), 5) ) {
                                alt16=6;
                            }
                            else if ( LA16_2 ==26 && getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_2_1(), 0) ) {
                                alt16=1;
                            }
                            else if ( LA16_2 ==29 && getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_2_1(), 1) ) {
                                alt16=2;
                            }
                            else if ( LA16_2 ==31 && getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_2_1(), 2) ) {
                                alt16=3;
                            }
                            else if ( LA16_2 ==32 && getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_2_1(), 3) ) {
                                alt16=4;
                            }
                            else if ( LA16_2 ==33 && getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_2_1(), 4) ) {
                                alt16=5;
                            }


                        }


                        switch (alt16) {
                    	case 1 :
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1430:4: ({...}? => ( ({...}? => (otherlv_62= ',' otherlv_63= 'Type' otherlv_64= '=' ( (lv_type_65_0= ruleDataBase ) ) ) ) ) )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1430:4: ({...}? => ( ({...}? => (otherlv_62= ',' otherlv_63= 'Type' otherlv_64= '=' ( (lv_type_65_0= ruleDataBase ) ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1431:5: {...}? => ( ({...}? => (otherlv_62= ',' otherlv_63= 'Type' otherlv_64= '=' ( (lv_type_65_0= ruleDataBase ) ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_2_1(), 0) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_2_1(), 0)");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1431:111: ( ({...}? => (otherlv_62= ',' otherlv_63= 'Type' otherlv_64= '=' ( (lv_type_65_0= ruleDataBase ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1432:6: ({...}? => (otherlv_62= ',' otherlv_63= 'Type' otherlv_64= '=' ( (lv_type_65_0= ruleDataBase ) ) ) )
                    	    {
                    	     
                    	    	 				  getUnorderedGroupHelper().select(grammarAccess.getConnectionAccess().getUnorderedGroup_2_2_1(), 0);
                    	    	 				
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1435:6: ({...}? => (otherlv_62= ',' otherlv_63= 'Type' otherlv_64= '=' ( (lv_type_65_0= ruleDataBase ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1435:7: {...}? => (otherlv_62= ',' otherlv_63= 'Type' otherlv_64= '=' ( (lv_type_65_0= ruleDataBase ) ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "true");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1435:16: (otherlv_62= ',' otherlv_63= 'Type' otherlv_64= '=' ( (lv_type_65_0= ruleDataBase ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1435:18: otherlv_62= ',' otherlv_63= 'Type' otherlv_64= '=' ( (lv_type_65_0= ruleDataBase ) )
                    	    {
                    	    otherlv_62=(Token)match(input,28,FOLLOW_28_in_ruleConnection3472); 

                    	        	newLeafNode(otherlv_62, grammarAccess.getConnectionAccess().getCommaKeyword_2_2_1_0_0());
                    	        
                    	    otherlv_63=(Token)match(input,26,FOLLOW_26_in_ruleConnection3484); 

                    	        	newLeafNode(otherlv_63, grammarAccess.getConnectionAccess().getTypeKeyword_2_2_1_0_1());
                    	        
                    	    otherlv_64=(Token)match(input,27,FOLLOW_27_in_ruleConnection3496); 

                    	        	newLeafNode(otherlv_64, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_2_1_0_2());
                    	        
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1447:1: ( (lv_type_65_0= ruleDataBase ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1448:1: (lv_type_65_0= ruleDataBase )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1448:1: (lv_type_65_0= ruleDataBase )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1449:3: lv_type_65_0= ruleDataBase
                    	    {
                    	     
                    	    	        newCompositeNode(grammarAccess.getConnectionAccess().getTypeDataBaseParserRuleCall_2_2_1_0_3_0()); 
                    	    	    
                    	    pushFollow(FOLLOW_ruleDataBase_in_ruleConnection3517);
                    	    lv_type_65_0=ruleDataBase();

                    	    state._fsp--;


                    	    	        if (current==null) {
                    	    	            current = createModelElementForParent(grammarAccess.getConnectionRule());
                    	    	        }
                    	           		set(
                    	           			current, 
                    	           			"type",
                    	            		lv_type_65_0, 
                    	            		"DataBase");
                    	    	        afterParserOrEnumRuleCall();
                    	    	    

                    	    }


                    	    }


                    	    }


                    	    }

                    	     
                    	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConnectionAccess().getUnorderedGroup_2_2_1());
                    	    	 				

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 2 :
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1472:4: ({...}? => ( ({...}? => (otherlv_66= ',' otherlv_67= 'Database' otherlv_68= '=' ( (lv_dbname_69_0= RULE_STRING ) ) ) ) ) )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1472:4: ({...}? => ( ({...}? => (otherlv_66= ',' otherlv_67= 'Database' otherlv_68= '=' ( (lv_dbname_69_0= RULE_STRING ) ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1473:5: {...}? => ( ({...}? => (otherlv_66= ',' otherlv_67= 'Database' otherlv_68= '=' ( (lv_dbname_69_0= RULE_STRING ) ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_2_1(), 1) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_2_1(), 1)");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1473:111: ( ({...}? => (otherlv_66= ',' otherlv_67= 'Database' otherlv_68= '=' ( (lv_dbname_69_0= RULE_STRING ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1474:6: ({...}? => (otherlv_66= ',' otherlv_67= 'Database' otherlv_68= '=' ( (lv_dbname_69_0= RULE_STRING ) ) ) )
                    	    {
                    	     
                    	    	 				  getUnorderedGroupHelper().select(grammarAccess.getConnectionAccess().getUnorderedGroup_2_2_1(), 1);
                    	    	 				
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1477:6: ({...}? => (otherlv_66= ',' otherlv_67= 'Database' otherlv_68= '=' ( (lv_dbname_69_0= RULE_STRING ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1477:7: {...}? => (otherlv_66= ',' otherlv_67= 'Database' otherlv_68= '=' ( (lv_dbname_69_0= RULE_STRING ) ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "true");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1477:16: (otherlv_66= ',' otherlv_67= 'Database' otherlv_68= '=' ( (lv_dbname_69_0= RULE_STRING ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1477:18: otherlv_66= ',' otherlv_67= 'Database' otherlv_68= '=' ( (lv_dbname_69_0= RULE_STRING ) )
                    	    {
                    	    otherlv_66=(Token)match(input,28,FOLLOW_28_in_ruleConnection3585); 

                    	        	newLeafNode(otherlv_66, grammarAccess.getConnectionAccess().getCommaKeyword_2_2_1_1_0());
                    	        
                    	    otherlv_67=(Token)match(input,29,FOLLOW_29_in_ruleConnection3597); 

                    	        	newLeafNode(otherlv_67, grammarAccess.getConnectionAccess().getDatabaseKeyword_2_2_1_1_1());
                    	        
                    	    otherlv_68=(Token)match(input,27,FOLLOW_27_in_ruleConnection3609); 

                    	        	newLeafNode(otherlv_68, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_2_1_1_2());
                    	        
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1489:1: ( (lv_dbname_69_0= RULE_STRING ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1490:1: (lv_dbname_69_0= RULE_STRING )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1490:1: (lv_dbname_69_0= RULE_STRING )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1491:3: lv_dbname_69_0= RULE_STRING
                    	    {
                    	    lv_dbname_69_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConnection3626); 

                    	    			newLeafNode(lv_dbname_69_0, grammarAccess.getConnectionAccess().getDbnameSTRINGTerminalRuleCall_2_2_1_1_3_0()); 
                    	    		

                    	    	        if (current==null) {
                    	    	            current = createModelElement(grammarAccess.getConnectionRule());
                    	    	        }
                    	           		setWithLastConsumed(
                    	           			current, 
                    	           			"dbname",
                    	            		lv_dbname_69_0, 
                    	            		"STRING");
                    	    	    

                    	    }


                    	    }


                    	    }


                    	    }

                    	     
                    	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConnectionAccess().getUnorderedGroup_2_2_1());
                    	    	 				

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 3 :
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1514:4: ({...}? => ( ({...}? => (otherlv_70= ',' otherlv_71= 'Password' otherlv_72= '=' ( (lv_password_73_0= RULE_STRING ) ) ) ) ) )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1514:4: ({...}? => ( ({...}? => (otherlv_70= ',' otherlv_71= 'Password' otherlv_72= '=' ( (lv_password_73_0= RULE_STRING ) ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1515:5: {...}? => ( ({...}? => (otherlv_70= ',' otherlv_71= 'Password' otherlv_72= '=' ( (lv_password_73_0= RULE_STRING ) ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_2_1(), 2) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_2_1(), 2)");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1515:111: ( ({...}? => (otherlv_70= ',' otherlv_71= 'Password' otherlv_72= '=' ( (lv_password_73_0= RULE_STRING ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1516:6: ({...}? => (otherlv_70= ',' otherlv_71= 'Password' otherlv_72= '=' ( (lv_password_73_0= RULE_STRING ) ) ) )
                    	    {
                    	     
                    	    	 				  getUnorderedGroupHelper().select(grammarAccess.getConnectionAccess().getUnorderedGroup_2_2_1(), 2);
                    	    	 				
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1519:6: ({...}? => (otherlv_70= ',' otherlv_71= 'Password' otherlv_72= '=' ( (lv_password_73_0= RULE_STRING ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1519:7: {...}? => (otherlv_70= ',' otherlv_71= 'Password' otherlv_72= '=' ( (lv_password_73_0= RULE_STRING ) ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "true");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1519:16: (otherlv_70= ',' otherlv_71= 'Password' otherlv_72= '=' ( (lv_password_73_0= RULE_STRING ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1519:18: otherlv_70= ',' otherlv_71= 'Password' otherlv_72= '=' ( (lv_password_73_0= RULE_STRING ) )
                    	    {
                    	    otherlv_70=(Token)match(input,28,FOLLOW_28_in_ruleConnection3699); 

                    	        	newLeafNode(otherlv_70, grammarAccess.getConnectionAccess().getCommaKeyword_2_2_1_2_0());
                    	        
                    	    otherlv_71=(Token)match(input,31,FOLLOW_31_in_ruleConnection3711); 

                    	        	newLeafNode(otherlv_71, grammarAccess.getConnectionAccess().getPasswordKeyword_2_2_1_2_1());
                    	        
                    	    otherlv_72=(Token)match(input,27,FOLLOW_27_in_ruleConnection3723); 

                    	        	newLeafNode(otherlv_72, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_2_1_2_2());
                    	        
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1531:1: ( (lv_password_73_0= RULE_STRING ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1532:1: (lv_password_73_0= RULE_STRING )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1532:1: (lv_password_73_0= RULE_STRING )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1533:3: lv_password_73_0= RULE_STRING
                    	    {
                    	    lv_password_73_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConnection3740); 

                    	    			newLeafNode(lv_password_73_0, grammarAccess.getConnectionAccess().getPasswordSTRINGTerminalRuleCall_2_2_1_2_3_0()); 
                    	    		

                    	    	        if (current==null) {
                    	    	            current = createModelElement(grammarAccess.getConnectionRule());
                    	    	        }
                    	           		setWithLastConsumed(
                    	           			current, 
                    	           			"password",
                    	            		lv_password_73_0, 
                    	            		"STRING");
                    	    	    

                    	    }


                    	    }


                    	    }


                    	    }

                    	     
                    	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConnectionAccess().getUnorderedGroup_2_2_1());
                    	    	 				

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 4 :
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1556:4: ({...}? => ( ({...}? => (otherlv_74= ',' otherlv_75= 'URL' otherlv_76= '=' ( (lv_url_77_0= RULE_STRING ) ) ) ) ) )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1556:4: ({...}? => ( ({...}? => (otherlv_74= ',' otherlv_75= 'URL' otherlv_76= '=' ( (lv_url_77_0= RULE_STRING ) ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1557:5: {...}? => ( ({...}? => (otherlv_74= ',' otherlv_75= 'URL' otherlv_76= '=' ( (lv_url_77_0= RULE_STRING ) ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_2_1(), 3) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_2_1(), 3)");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1557:111: ( ({...}? => (otherlv_74= ',' otherlv_75= 'URL' otherlv_76= '=' ( (lv_url_77_0= RULE_STRING ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1558:6: ({...}? => (otherlv_74= ',' otherlv_75= 'URL' otherlv_76= '=' ( (lv_url_77_0= RULE_STRING ) ) ) )
                    	    {
                    	     
                    	    	 				  getUnorderedGroupHelper().select(grammarAccess.getConnectionAccess().getUnorderedGroup_2_2_1(), 3);
                    	    	 				
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1561:6: ({...}? => (otherlv_74= ',' otherlv_75= 'URL' otherlv_76= '=' ( (lv_url_77_0= RULE_STRING ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1561:7: {...}? => (otherlv_74= ',' otherlv_75= 'URL' otherlv_76= '=' ( (lv_url_77_0= RULE_STRING ) ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "true");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1561:16: (otherlv_74= ',' otherlv_75= 'URL' otherlv_76= '=' ( (lv_url_77_0= RULE_STRING ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1561:18: otherlv_74= ',' otherlv_75= 'URL' otherlv_76= '=' ( (lv_url_77_0= RULE_STRING ) )
                    	    {
                    	    otherlv_74=(Token)match(input,28,FOLLOW_28_in_ruleConnection3813); 

                    	        	newLeafNode(otherlv_74, grammarAccess.getConnectionAccess().getCommaKeyword_2_2_1_3_0());
                    	        
                    	    otherlv_75=(Token)match(input,32,FOLLOW_32_in_ruleConnection3825); 

                    	        	newLeafNode(otherlv_75, grammarAccess.getConnectionAccess().getURLKeyword_2_2_1_3_1());
                    	        
                    	    otherlv_76=(Token)match(input,27,FOLLOW_27_in_ruleConnection3837); 

                    	        	newLeafNode(otherlv_76, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_2_1_3_2());
                    	        
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1573:1: ( (lv_url_77_0= RULE_STRING ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1574:1: (lv_url_77_0= RULE_STRING )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1574:1: (lv_url_77_0= RULE_STRING )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1575:3: lv_url_77_0= RULE_STRING
                    	    {
                    	    lv_url_77_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConnection3854); 

                    	    			newLeafNode(lv_url_77_0, grammarAccess.getConnectionAccess().getUrlSTRINGTerminalRuleCall_2_2_1_3_3_0()); 
                    	    		

                    	    	        if (current==null) {
                    	    	            current = createModelElement(grammarAccess.getConnectionRule());
                    	    	        }
                    	           		setWithLastConsumed(
                    	           			current, 
                    	           			"url",
                    	            		lv_url_77_0, 
                    	            		"STRING");
                    	    	    

                    	    }


                    	    }


                    	    }


                    	    }

                    	     
                    	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConnectionAccess().getUnorderedGroup_2_2_1());
                    	    	 				

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 5 :
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1598:4: ({...}? => ( ({...}? => (otherlv_78= ',' otherlv_79= 'Port' otherlv_80= '=' ( (lv_port_81_0= RULE_STRING ) ) ) ) ) )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1598:4: ({...}? => ( ({...}? => (otherlv_78= ',' otherlv_79= 'Port' otherlv_80= '=' ( (lv_port_81_0= RULE_STRING ) ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1599:5: {...}? => ( ({...}? => (otherlv_78= ',' otherlv_79= 'Port' otherlv_80= '=' ( (lv_port_81_0= RULE_STRING ) ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_2_1(), 4) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_2_1(), 4)");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1599:111: ( ({...}? => (otherlv_78= ',' otherlv_79= 'Port' otherlv_80= '=' ( (lv_port_81_0= RULE_STRING ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1600:6: ({...}? => (otherlv_78= ',' otherlv_79= 'Port' otherlv_80= '=' ( (lv_port_81_0= RULE_STRING ) ) ) )
                    	    {
                    	     
                    	    	 				  getUnorderedGroupHelper().select(grammarAccess.getConnectionAccess().getUnorderedGroup_2_2_1(), 4);
                    	    	 				
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1603:6: ({...}? => (otherlv_78= ',' otherlv_79= 'Port' otherlv_80= '=' ( (lv_port_81_0= RULE_STRING ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1603:7: {...}? => (otherlv_78= ',' otherlv_79= 'Port' otherlv_80= '=' ( (lv_port_81_0= RULE_STRING ) ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "true");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1603:16: (otherlv_78= ',' otherlv_79= 'Port' otherlv_80= '=' ( (lv_port_81_0= RULE_STRING ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1603:18: otherlv_78= ',' otherlv_79= 'Port' otherlv_80= '=' ( (lv_port_81_0= RULE_STRING ) )
                    	    {
                    	    otherlv_78=(Token)match(input,28,FOLLOW_28_in_ruleConnection3927); 

                    	        	newLeafNode(otherlv_78, grammarAccess.getConnectionAccess().getCommaKeyword_2_2_1_4_0());
                    	        
                    	    otherlv_79=(Token)match(input,33,FOLLOW_33_in_ruleConnection3939); 

                    	        	newLeafNode(otherlv_79, grammarAccess.getConnectionAccess().getPortKeyword_2_2_1_4_1());
                    	        
                    	    otherlv_80=(Token)match(input,27,FOLLOW_27_in_ruleConnection3951); 

                    	        	newLeafNode(otherlv_80, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_2_1_4_2());
                    	        
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1615:1: ( (lv_port_81_0= RULE_STRING ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1616:1: (lv_port_81_0= RULE_STRING )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1616:1: (lv_port_81_0= RULE_STRING )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1617:3: lv_port_81_0= RULE_STRING
                    	    {
                    	    lv_port_81_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConnection3968); 

                    	    			newLeafNode(lv_port_81_0, grammarAccess.getConnectionAccess().getPortSTRINGTerminalRuleCall_2_2_1_4_3_0()); 
                    	    		

                    	    	        if (current==null) {
                    	    	            current = createModelElement(grammarAccess.getConnectionRule());
                    	    	        }
                    	           		setWithLastConsumed(
                    	           			current, 
                    	           			"port",
                    	            		lv_port_81_0, 
                    	            		"STRING");
                    	    	    

                    	    }


                    	    }


                    	    }


                    	    }

                    	     
                    	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConnectionAccess().getUnorderedGroup_2_2_1());
                    	    	 				

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 6 :
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1640:4: ({...}? => ( ({...}? => (otherlv_82= ',' otherlv_83= 'Pool-Size' otherlv_84= '=' ( (lv_poolsize_85_0= RULE_STRING ) ) ) ) ) )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1640:4: ({...}? => ( ({...}? => (otherlv_82= ',' otherlv_83= 'Pool-Size' otherlv_84= '=' ( (lv_poolsize_85_0= RULE_STRING ) ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1641:5: {...}? => ( ({...}? => (otherlv_82= ',' otherlv_83= 'Pool-Size' otherlv_84= '=' ( (lv_poolsize_85_0= RULE_STRING ) ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_2_1(), 5) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_2_1(), 5)");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1641:111: ( ({...}? => (otherlv_82= ',' otherlv_83= 'Pool-Size' otherlv_84= '=' ( (lv_poolsize_85_0= RULE_STRING ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1642:6: ({...}? => (otherlv_82= ',' otherlv_83= 'Pool-Size' otherlv_84= '=' ( (lv_poolsize_85_0= RULE_STRING ) ) ) )
                    	    {
                    	     
                    	    	 				  getUnorderedGroupHelper().select(grammarAccess.getConnectionAccess().getUnorderedGroup_2_2_1(), 5);
                    	    	 				
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1645:6: ({...}? => (otherlv_82= ',' otherlv_83= 'Pool-Size' otherlv_84= '=' ( (lv_poolsize_85_0= RULE_STRING ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1645:7: {...}? => (otherlv_82= ',' otherlv_83= 'Pool-Size' otherlv_84= '=' ( (lv_poolsize_85_0= RULE_STRING ) ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "true");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1645:16: (otherlv_82= ',' otherlv_83= 'Pool-Size' otherlv_84= '=' ( (lv_poolsize_85_0= RULE_STRING ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1645:18: otherlv_82= ',' otherlv_83= 'Pool-Size' otherlv_84= '=' ( (lv_poolsize_85_0= RULE_STRING ) )
                    	    {
                    	    otherlv_82=(Token)match(input,28,FOLLOW_28_in_ruleConnection4041); 

                    	        	newLeafNode(otherlv_82, grammarAccess.getConnectionAccess().getCommaKeyword_2_2_1_5_0());
                    	        
                    	    otherlv_83=(Token)match(input,34,FOLLOW_34_in_ruleConnection4053); 

                    	        	newLeafNode(otherlv_83, grammarAccess.getConnectionAccess().getPoolSizeKeyword_2_2_1_5_1());
                    	        
                    	    otherlv_84=(Token)match(input,27,FOLLOW_27_in_ruleConnection4065); 

                    	        	newLeafNode(otherlv_84, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_2_1_5_2());
                    	        
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1657:1: ( (lv_poolsize_85_0= RULE_STRING ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1658:1: (lv_poolsize_85_0= RULE_STRING )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1658:1: (lv_poolsize_85_0= RULE_STRING )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1659:3: lv_poolsize_85_0= RULE_STRING
                    	    {
                    	    lv_poolsize_85_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConnection4082); 

                    	    			newLeafNode(lv_poolsize_85_0, grammarAccess.getConnectionAccess().getPoolsizeSTRINGTerminalRuleCall_2_2_1_5_3_0()); 
                    	    		

                    	    	        if (current==null) {
                    	    	            current = createModelElement(grammarAccess.getConnectionRule());
                    	    	        }
                    	           		setWithLastConsumed(
                    	           			current, 
                    	           			"poolsize",
                    	            		lv_poolsize_85_0, 
                    	            		"STRING");
                    	    	    

                    	    }


                    	    }


                    	    }


                    	    }

                    	     
                    	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConnectionAccess().getUnorderedGroup_2_2_1());
                    	    	 				

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt16 >= 1 ) break loop16;
                                EarlyExitException eee =
                                    new EarlyExitException(16, input);
                                throw eee;
                        }
                        cnt16++;
                    } while (true);

                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getConnectionAccess().getUnorderedGroup_2_2_1()) ) {
                        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canLeave(grammarAccess.getConnectionAccess().getUnorderedGroup_2_2_1())");
                    }

                    }


                    }

                     
                    	  getUnorderedGroupHelper().leave(grammarAccess.getConnectionAccess().getUnorderedGroup_2_2_1());
                    	

                    }


                    }


                    }
                    break;
                case 4 :
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1691:6: ( (otherlv_86= 'Password' otherlv_87= '=' ( (lv_password_88_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_90= ',' otherlv_91= 'Type' otherlv_92= '=' ( (lv_type_93_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_94= ',' otherlv_95= 'Database' otherlv_96= '=' ( (lv_dbname_97_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_98= ',' otherlv_99= 'User' otherlv_100= '=' ( (lv_user_101_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_102= ',' otherlv_103= 'URL' otherlv_104= '=' ( (lv_url_105_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_106= ',' otherlv_107= 'Port' otherlv_108= '=' ( (lv_port_109_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_110= ',' otherlv_111= 'Pool-Size' otherlv_112= '=' ( (lv_poolsize_113_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) )
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1691:6: ( (otherlv_86= 'Password' otherlv_87= '=' ( (lv_password_88_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_90= ',' otherlv_91= 'Type' otherlv_92= '=' ( (lv_type_93_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_94= ',' otherlv_95= 'Database' otherlv_96= '=' ( (lv_dbname_97_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_98= ',' otherlv_99= 'User' otherlv_100= '=' ( (lv_user_101_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_102= ',' otherlv_103= 'URL' otherlv_104= '=' ( (lv_url_105_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_106= ',' otherlv_107= 'Port' otherlv_108= '=' ( (lv_port_109_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_110= ',' otherlv_111= 'Pool-Size' otherlv_112= '=' ( (lv_poolsize_113_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1691:7: (otherlv_86= 'Password' otherlv_87= '=' ( (lv_password_88_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_90= ',' otherlv_91= 'Type' otherlv_92= '=' ( (lv_type_93_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_94= ',' otherlv_95= 'Database' otherlv_96= '=' ( (lv_dbname_97_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_98= ',' otherlv_99= 'User' otherlv_100= '=' ( (lv_user_101_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_102= ',' otherlv_103= 'URL' otherlv_104= '=' ( (lv_url_105_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_106= ',' otherlv_107= 'Port' otherlv_108= '=' ( (lv_port_109_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_110= ',' otherlv_111= 'Pool-Size' otherlv_112= '=' ( (lv_poolsize_113_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) )
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1691:7: (otherlv_86= 'Password' otherlv_87= '=' ( (lv_password_88_0= RULE_STRING ) ) )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1691:9: otherlv_86= 'Password' otherlv_87= '=' ( (lv_password_88_0= RULE_STRING ) )
                    {
                    otherlv_86=(Token)match(input,31,FOLLOW_31_in_ruleConnection4155); 

                        	newLeafNode(otherlv_86, grammarAccess.getConnectionAccess().getPasswordKeyword_2_3_0_0());
                        
                    otherlv_87=(Token)match(input,27,FOLLOW_27_in_ruleConnection4167); 

                        	newLeafNode(otherlv_87, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_3_0_1());
                        
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1699:1: ( (lv_password_88_0= RULE_STRING ) )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1700:1: (lv_password_88_0= RULE_STRING )
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1700:1: (lv_password_88_0= RULE_STRING )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1701:3: lv_password_88_0= RULE_STRING
                    {
                    lv_password_88_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConnection4184); 

                    			newLeafNode(lv_password_88_0, grammarAccess.getConnectionAccess().getPasswordSTRINGTerminalRuleCall_2_3_0_2_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getConnectionRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"password",
                            		lv_password_88_0, 
                            		"STRING");
                    	    

                    }


                    }


                    }

                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1717:3: ( ( ( ( ({...}? => ( ({...}? => (otherlv_90= ',' otherlv_91= 'Type' otherlv_92= '=' ( (lv_type_93_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_94= ',' otherlv_95= 'Database' otherlv_96= '=' ( (lv_dbname_97_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_98= ',' otherlv_99= 'User' otherlv_100= '=' ( (lv_user_101_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_102= ',' otherlv_103= 'URL' otherlv_104= '=' ( (lv_url_105_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_106= ',' otherlv_107= 'Port' otherlv_108= '=' ( (lv_port_109_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_110= ',' otherlv_111= 'Pool-Size' otherlv_112= '=' ( (lv_poolsize_113_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1719:1: ( ( ( ({...}? => ( ({...}? => (otherlv_90= ',' otherlv_91= 'Type' otherlv_92= '=' ( (lv_type_93_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_94= ',' otherlv_95= 'Database' otherlv_96= '=' ( (lv_dbname_97_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_98= ',' otherlv_99= 'User' otherlv_100= '=' ( (lv_user_101_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_102= ',' otherlv_103= 'URL' otherlv_104= '=' ( (lv_url_105_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_106= ',' otherlv_107= 'Port' otherlv_108= '=' ( (lv_port_109_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_110= ',' otherlv_111= 'Pool-Size' otherlv_112= '=' ( (lv_poolsize_113_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) )
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1719:1: ( ( ( ({...}? => ( ({...}? => (otherlv_90= ',' otherlv_91= 'Type' otherlv_92= '=' ( (lv_type_93_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_94= ',' otherlv_95= 'Database' otherlv_96= '=' ( (lv_dbname_97_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_98= ',' otherlv_99= 'User' otherlv_100= '=' ( (lv_user_101_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_102= ',' otherlv_103= 'URL' otherlv_104= '=' ( (lv_url_105_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_106= ',' otherlv_107= 'Port' otherlv_108= '=' ( (lv_port_109_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_110= ',' otherlv_111= 'Pool-Size' otherlv_112= '=' ( (lv_poolsize_113_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1720:2: ( ( ({...}? => ( ({...}? => (otherlv_90= ',' otherlv_91= 'Type' otherlv_92= '=' ( (lv_type_93_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_94= ',' otherlv_95= 'Database' otherlv_96= '=' ( (lv_dbname_97_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_98= ',' otherlv_99= 'User' otherlv_100= '=' ( (lv_user_101_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_102= ',' otherlv_103= 'URL' otherlv_104= '=' ( (lv_url_105_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_106= ',' otherlv_107= 'Port' otherlv_108= '=' ( (lv_port_109_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_110= ',' otherlv_111= 'Pool-Size' otherlv_112= '=' ( (lv_poolsize_113_0= RULE_STRING ) ) ) ) ) ) )+ {...}?)
                    {
                     
                    	  getUnorderedGroupHelper().enter(grammarAccess.getConnectionAccess().getUnorderedGroup_2_3_1());
                    	
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1723:2: ( ( ({...}? => ( ({...}? => (otherlv_90= ',' otherlv_91= 'Type' otherlv_92= '=' ( (lv_type_93_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_94= ',' otherlv_95= 'Database' otherlv_96= '=' ( (lv_dbname_97_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_98= ',' otherlv_99= 'User' otherlv_100= '=' ( (lv_user_101_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_102= ',' otherlv_103= 'URL' otherlv_104= '=' ( (lv_url_105_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_106= ',' otherlv_107= 'Port' otherlv_108= '=' ( (lv_port_109_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_110= ',' otherlv_111= 'Pool-Size' otherlv_112= '=' ( (lv_poolsize_113_0= RULE_STRING ) ) ) ) ) ) )+ {...}?)
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1724:3: ( ({...}? => ( ({...}? => (otherlv_90= ',' otherlv_91= 'Type' otherlv_92= '=' ( (lv_type_93_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_94= ',' otherlv_95= 'Database' otherlv_96= '=' ( (lv_dbname_97_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_98= ',' otherlv_99= 'User' otherlv_100= '=' ( (lv_user_101_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_102= ',' otherlv_103= 'URL' otherlv_104= '=' ( (lv_url_105_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_106= ',' otherlv_107= 'Port' otherlv_108= '=' ( (lv_port_109_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_110= ',' otherlv_111= 'Pool-Size' otherlv_112= '=' ( (lv_poolsize_113_0= RULE_STRING ) ) ) ) ) ) )+ {...}?
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1724:3: ( ({...}? => ( ({...}? => (otherlv_90= ',' otherlv_91= 'Type' otherlv_92= '=' ( (lv_type_93_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_94= ',' otherlv_95= 'Database' otherlv_96= '=' ( (lv_dbname_97_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_98= ',' otherlv_99= 'User' otherlv_100= '=' ( (lv_user_101_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_102= ',' otherlv_103= 'URL' otherlv_104= '=' ( (lv_url_105_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_106= ',' otherlv_107= 'Port' otherlv_108= '=' ( (lv_port_109_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_110= ',' otherlv_111= 'Pool-Size' otherlv_112= '=' ( (lv_poolsize_113_0= RULE_STRING ) ) ) ) ) ) )+
                    int cnt17=0;
                    loop17:
                    do {
                        int alt17=7;
                        int LA17_0 = input.LA(1);

                        if ( LA17_0 ==28 && ( getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_3_1(), 1) || getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_3_1(), 0) || getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_3_1(), 3) || getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_3_1(), 4) || getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_3_1(), 5) || getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_3_1(), 2) ) ) {
                            int LA17_2 = input.LA(2);

                            if ( LA17_2 ==29 && getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_3_1(), 1) ) {
                                alt17=2;
                            }
                            else if ( LA17_2 ==34 && getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_3_1(), 5) ) {
                                alt17=6;
                            }
                            else if ( LA17_2 ==26 && getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_3_1(), 0) ) {
                                alt17=1;
                            }
                            else if ( LA17_2 ==33 && getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_3_1(), 4) ) {
                                alt17=5;
                            }
                            else if ( LA17_2 ==30 && getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_3_1(), 2) ) {
                                alt17=3;
                            }
                            else if ( LA17_2 ==32 && getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_3_1(), 3) ) {
                                alt17=4;
                            }


                        }


                        switch (alt17) {
                    	case 1 :
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1726:4: ({...}? => ( ({...}? => (otherlv_90= ',' otherlv_91= 'Type' otherlv_92= '=' ( (lv_type_93_0= ruleDataBase ) ) ) ) ) )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1726:4: ({...}? => ( ({...}? => (otherlv_90= ',' otherlv_91= 'Type' otherlv_92= '=' ( (lv_type_93_0= ruleDataBase ) ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1727:5: {...}? => ( ({...}? => (otherlv_90= ',' otherlv_91= 'Type' otherlv_92= '=' ( (lv_type_93_0= ruleDataBase ) ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_3_1(), 0) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_3_1(), 0)");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1727:111: ( ({...}? => (otherlv_90= ',' otherlv_91= 'Type' otherlv_92= '=' ( (lv_type_93_0= ruleDataBase ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1728:6: ({...}? => (otherlv_90= ',' otherlv_91= 'Type' otherlv_92= '=' ( (lv_type_93_0= ruleDataBase ) ) ) )
                    	    {
                    	     
                    	    	 				  getUnorderedGroupHelper().select(grammarAccess.getConnectionAccess().getUnorderedGroup_2_3_1(), 0);
                    	    	 				
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1731:6: ({...}? => (otherlv_90= ',' otherlv_91= 'Type' otherlv_92= '=' ( (lv_type_93_0= ruleDataBase ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1731:7: {...}? => (otherlv_90= ',' otherlv_91= 'Type' otherlv_92= '=' ( (lv_type_93_0= ruleDataBase ) ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "true");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1731:16: (otherlv_90= ',' otherlv_91= 'Type' otherlv_92= '=' ( (lv_type_93_0= ruleDataBase ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1731:18: otherlv_90= ',' otherlv_91= 'Type' otherlv_92= '=' ( (lv_type_93_0= ruleDataBase ) )
                    	    {
                    	    otherlv_90=(Token)match(input,28,FOLLOW_28_in_ruleConnection4248); 

                    	        	newLeafNode(otherlv_90, grammarAccess.getConnectionAccess().getCommaKeyword_2_3_1_0_0());
                    	        
                    	    otherlv_91=(Token)match(input,26,FOLLOW_26_in_ruleConnection4260); 

                    	        	newLeafNode(otherlv_91, grammarAccess.getConnectionAccess().getTypeKeyword_2_3_1_0_1());
                    	        
                    	    otherlv_92=(Token)match(input,27,FOLLOW_27_in_ruleConnection4272); 

                    	        	newLeafNode(otherlv_92, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_3_1_0_2());
                    	        
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1743:1: ( (lv_type_93_0= ruleDataBase ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1744:1: (lv_type_93_0= ruleDataBase )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1744:1: (lv_type_93_0= ruleDataBase )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1745:3: lv_type_93_0= ruleDataBase
                    	    {
                    	     
                    	    	        newCompositeNode(grammarAccess.getConnectionAccess().getTypeDataBaseParserRuleCall_2_3_1_0_3_0()); 
                    	    	    
                    	    pushFollow(FOLLOW_ruleDataBase_in_ruleConnection4293);
                    	    lv_type_93_0=ruleDataBase();

                    	    state._fsp--;


                    	    	        if (current==null) {
                    	    	            current = createModelElementForParent(grammarAccess.getConnectionRule());
                    	    	        }
                    	           		set(
                    	           			current, 
                    	           			"type",
                    	            		lv_type_93_0, 
                    	            		"DataBase");
                    	    	        afterParserOrEnumRuleCall();
                    	    	    

                    	    }


                    	    }


                    	    }


                    	    }

                    	     
                    	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConnectionAccess().getUnorderedGroup_2_3_1());
                    	    	 				

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 2 :
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1768:4: ({...}? => ( ({...}? => (otherlv_94= ',' otherlv_95= 'Database' otherlv_96= '=' ( (lv_dbname_97_0= RULE_STRING ) ) ) ) ) )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1768:4: ({...}? => ( ({...}? => (otherlv_94= ',' otherlv_95= 'Database' otherlv_96= '=' ( (lv_dbname_97_0= RULE_STRING ) ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1769:5: {...}? => ( ({...}? => (otherlv_94= ',' otherlv_95= 'Database' otherlv_96= '=' ( (lv_dbname_97_0= RULE_STRING ) ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_3_1(), 1) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_3_1(), 1)");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1769:111: ( ({...}? => (otherlv_94= ',' otherlv_95= 'Database' otherlv_96= '=' ( (lv_dbname_97_0= RULE_STRING ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1770:6: ({...}? => (otherlv_94= ',' otherlv_95= 'Database' otherlv_96= '=' ( (lv_dbname_97_0= RULE_STRING ) ) ) )
                    	    {
                    	     
                    	    	 				  getUnorderedGroupHelper().select(grammarAccess.getConnectionAccess().getUnorderedGroup_2_3_1(), 1);
                    	    	 				
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1773:6: ({...}? => (otherlv_94= ',' otherlv_95= 'Database' otherlv_96= '=' ( (lv_dbname_97_0= RULE_STRING ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1773:7: {...}? => (otherlv_94= ',' otherlv_95= 'Database' otherlv_96= '=' ( (lv_dbname_97_0= RULE_STRING ) ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "true");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1773:16: (otherlv_94= ',' otherlv_95= 'Database' otherlv_96= '=' ( (lv_dbname_97_0= RULE_STRING ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1773:18: otherlv_94= ',' otherlv_95= 'Database' otherlv_96= '=' ( (lv_dbname_97_0= RULE_STRING ) )
                    	    {
                    	    otherlv_94=(Token)match(input,28,FOLLOW_28_in_ruleConnection4361); 

                    	        	newLeafNode(otherlv_94, grammarAccess.getConnectionAccess().getCommaKeyword_2_3_1_1_0());
                    	        
                    	    otherlv_95=(Token)match(input,29,FOLLOW_29_in_ruleConnection4373); 

                    	        	newLeafNode(otherlv_95, grammarAccess.getConnectionAccess().getDatabaseKeyword_2_3_1_1_1());
                    	        
                    	    otherlv_96=(Token)match(input,27,FOLLOW_27_in_ruleConnection4385); 

                    	        	newLeafNode(otherlv_96, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_3_1_1_2());
                    	        
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1785:1: ( (lv_dbname_97_0= RULE_STRING ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1786:1: (lv_dbname_97_0= RULE_STRING )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1786:1: (lv_dbname_97_0= RULE_STRING )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1787:3: lv_dbname_97_0= RULE_STRING
                    	    {
                    	    lv_dbname_97_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConnection4402); 

                    	    			newLeafNode(lv_dbname_97_0, grammarAccess.getConnectionAccess().getDbnameSTRINGTerminalRuleCall_2_3_1_1_3_0()); 
                    	    		

                    	    	        if (current==null) {
                    	    	            current = createModelElement(grammarAccess.getConnectionRule());
                    	    	        }
                    	           		setWithLastConsumed(
                    	           			current, 
                    	           			"dbname",
                    	            		lv_dbname_97_0, 
                    	            		"STRING");
                    	    	    

                    	    }


                    	    }


                    	    }


                    	    }

                    	     
                    	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConnectionAccess().getUnorderedGroup_2_3_1());
                    	    	 				

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 3 :
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1810:4: ({...}? => ( ({...}? => (otherlv_98= ',' otherlv_99= 'User' otherlv_100= '=' ( (lv_user_101_0= RULE_STRING ) ) ) ) ) )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1810:4: ({...}? => ( ({...}? => (otherlv_98= ',' otherlv_99= 'User' otherlv_100= '=' ( (lv_user_101_0= RULE_STRING ) ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1811:5: {...}? => ( ({...}? => (otherlv_98= ',' otherlv_99= 'User' otherlv_100= '=' ( (lv_user_101_0= RULE_STRING ) ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_3_1(), 2) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_3_1(), 2)");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1811:111: ( ({...}? => (otherlv_98= ',' otherlv_99= 'User' otherlv_100= '=' ( (lv_user_101_0= RULE_STRING ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1812:6: ({...}? => (otherlv_98= ',' otherlv_99= 'User' otherlv_100= '=' ( (lv_user_101_0= RULE_STRING ) ) ) )
                    	    {
                    	     
                    	    	 				  getUnorderedGroupHelper().select(grammarAccess.getConnectionAccess().getUnorderedGroup_2_3_1(), 2);
                    	    	 				
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1815:6: ({...}? => (otherlv_98= ',' otherlv_99= 'User' otherlv_100= '=' ( (lv_user_101_0= RULE_STRING ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1815:7: {...}? => (otherlv_98= ',' otherlv_99= 'User' otherlv_100= '=' ( (lv_user_101_0= RULE_STRING ) ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "true");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1815:16: (otherlv_98= ',' otherlv_99= 'User' otherlv_100= '=' ( (lv_user_101_0= RULE_STRING ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1815:18: otherlv_98= ',' otherlv_99= 'User' otherlv_100= '=' ( (lv_user_101_0= RULE_STRING ) )
                    	    {
                    	    otherlv_98=(Token)match(input,28,FOLLOW_28_in_ruleConnection4475); 

                    	        	newLeafNode(otherlv_98, grammarAccess.getConnectionAccess().getCommaKeyword_2_3_1_2_0());
                    	        
                    	    otherlv_99=(Token)match(input,30,FOLLOW_30_in_ruleConnection4487); 

                    	        	newLeafNode(otherlv_99, grammarAccess.getConnectionAccess().getUserKeyword_2_3_1_2_1());
                    	        
                    	    otherlv_100=(Token)match(input,27,FOLLOW_27_in_ruleConnection4499); 

                    	        	newLeafNode(otherlv_100, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_3_1_2_2());
                    	        
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1827:1: ( (lv_user_101_0= RULE_STRING ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1828:1: (lv_user_101_0= RULE_STRING )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1828:1: (lv_user_101_0= RULE_STRING )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1829:3: lv_user_101_0= RULE_STRING
                    	    {
                    	    lv_user_101_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConnection4516); 

                    	    			newLeafNode(lv_user_101_0, grammarAccess.getConnectionAccess().getUserSTRINGTerminalRuleCall_2_3_1_2_3_0()); 
                    	    		

                    	    	        if (current==null) {
                    	    	            current = createModelElement(grammarAccess.getConnectionRule());
                    	    	        }
                    	           		setWithLastConsumed(
                    	           			current, 
                    	           			"user",
                    	            		lv_user_101_0, 
                    	            		"STRING");
                    	    	    

                    	    }


                    	    }


                    	    }


                    	    }

                    	     
                    	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConnectionAccess().getUnorderedGroup_2_3_1());
                    	    	 				

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 4 :
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1852:4: ({...}? => ( ({...}? => (otherlv_102= ',' otherlv_103= 'URL' otherlv_104= '=' ( (lv_url_105_0= RULE_STRING ) ) ) ) ) )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1852:4: ({...}? => ( ({...}? => (otherlv_102= ',' otherlv_103= 'URL' otherlv_104= '=' ( (lv_url_105_0= RULE_STRING ) ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1853:5: {...}? => ( ({...}? => (otherlv_102= ',' otherlv_103= 'URL' otherlv_104= '=' ( (lv_url_105_0= RULE_STRING ) ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_3_1(), 3) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_3_1(), 3)");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1853:111: ( ({...}? => (otherlv_102= ',' otherlv_103= 'URL' otherlv_104= '=' ( (lv_url_105_0= RULE_STRING ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1854:6: ({...}? => (otherlv_102= ',' otherlv_103= 'URL' otherlv_104= '=' ( (lv_url_105_0= RULE_STRING ) ) ) )
                    	    {
                    	     
                    	    	 				  getUnorderedGroupHelper().select(grammarAccess.getConnectionAccess().getUnorderedGroup_2_3_1(), 3);
                    	    	 				
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1857:6: ({...}? => (otherlv_102= ',' otherlv_103= 'URL' otherlv_104= '=' ( (lv_url_105_0= RULE_STRING ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1857:7: {...}? => (otherlv_102= ',' otherlv_103= 'URL' otherlv_104= '=' ( (lv_url_105_0= RULE_STRING ) ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "true");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1857:16: (otherlv_102= ',' otherlv_103= 'URL' otherlv_104= '=' ( (lv_url_105_0= RULE_STRING ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1857:18: otherlv_102= ',' otherlv_103= 'URL' otherlv_104= '=' ( (lv_url_105_0= RULE_STRING ) )
                    	    {
                    	    otherlv_102=(Token)match(input,28,FOLLOW_28_in_ruleConnection4589); 

                    	        	newLeafNode(otherlv_102, grammarAccess.getConnectionAccess().getCommaKeyword_2_3_1_3_0());
                    	        
                    	    otherlv_103=(Token)match(input,32,FOLLOW_32_in_ruleConnection4601); 

                    	        	newLeafNode(otherlv_103, grammarAccess.getConnectionAccess().getURLKeyword_2_3_1_3_1());
                    	        
                    	    otherlv_104=(Token)match(input,27,FOLLOW_27_in_ruleConnection4613); 

                    	        	newLeafNode(otherlv_104, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_3_1_3_2());
                    	        
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1869:1: ( (lv_url_105_0= RULE_STRING ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1870:1: (lv_url_105_0= RULE_STRING )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1870:1: (lv_url_105_0= RULE_STRING )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1871:3: lv_url_105_0= RULE_STRING
                    	    {
                    	    lv_url_105_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConnection4630); 

                    	    			newLeafNode(lv_url_105_0, grammarAccess.getConnectionAccess().getUrlSTRINGTerminalRuleCall_2_3_1_3_3_0()); 
                    	    		

                    	    	        if (current==null) {
                    	    	            current = createModelElement(grammarAccess.getConnectionRule());
                    	    	        }
                    	           		setWithLastConsumed(
                    	           			current, 
                    	           			"url",
                    	            		lv_url_105_0, 
                    	            		"STRING");
                    	    	    

                    	    }


                    	    }


                    	    }


                    	    }

                    	     
                    	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConnectionAccess().getUnorderedGroup_2_3_1());
                    	    	 				

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 5 :
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1894:4: ({...}? => ( ({...}? => (otherlv_106= ',' otherlv_107= 'Port' otherlv_108= '=' ( (lv_port_109_0= RULE_STRING ) ) ) ) ) )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1894:4: ({...}? => ( ({...}? => (otherlv_106= ',' otherlv_107= 'Port' otherlv_108= '=' ( (lv_port_109_0= RULE_STRING ) ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1895:5: {...}? => ( ({...}? => (otherlv_106= ',' otherlv_107= 'Port' otherlv_108= '=' ( (lv_port_109_0= RULE_STRING ) ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_3_1(), 4) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_3_1(), 4)");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1895:111: ( ({...}? => (otherlv_106= ',' otherlv_107= 'Port' otherlv_108= '=' ( (lv_port_109_0= RULE_STRING ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1896:6: ({...}? => (otherlv_106= ',' otherlv_107= 'Port' otherlv_108= '=' ( (lv_port_109_0= RULE_STRING ) ) ) )
                    	    {
                    	     
                    	    	 				  getUnorderedGroupHelper().select(grammarAccess.getConnectionAccess().getUnorderedGroup_2_3_1(), 4);
                    	    	 				
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1899:6: ({...}? => (otherlv_106= ',' otherlv_107= 'Port' otherlv_108= '=' ( (lv_port_109_0= RULE_STRING ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1899:7: {...}? => (otherlv_106= ',' otherlv_107= 'Port' otherlv_108= '=' ( (lv_port_109_0= RULE_STRING ) ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "true");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1899:16: (otherlv_106= ',' otherlv_107= 'Port' otherlv_108= '=' ( (lv_port_109_0= RULE_STRING ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1899:18: otherlv_106= ',' otherlv_107= 'Port' otherlv_108= '=' ( (lv_port_109_0= RULE_STRING ) )
                    	    {
                    	    otherlv_106=(Token)match(input,28,FOLLOW_28_in_ruleConnection4703); 

                    	        	newLeafNode(otherlv_106, grammarAccess.getConnectionAccess().getCommaKeyword_2_3_1_4_0());
                    	        
                    	    otherlv_107=(Token)match(input,33,FOLLOW_33_in_ruleConnection4715); 

                    	        	newLeafNode(otherlv_107, grammarAccess.getConnectionAccess().getPortKeyword_2_3_1_4_1());
                    	        
                    	    otherlv_108=(Token)match(input,27,FOLLOW_27_in_ruleConnection4727); 

                    	        	newLeafNode(otherlv_108, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_3_1_4_2());
                    	        
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1911:1: ( (lv_port_109_0= RULE_STRING ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1912:1: (lv_port_109_0= RULE_STRING )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1912:1: (lv_port_109_0= RULE_STRING )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1913:3: lv_port_109_0= RULE_STRING
                    	    {
                    	    lv_port_109_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConnection4744); 

                    	    			newLeafNode(lv_port_109_0, grammarAccess.getConnectionAccess().getPortSTRINGTerminalRuleCall_2_3_1_4_3_0()); 
                    	    		

                    	    	        if (current==null) {
                    	    	            current = createModelElement(grammarAccess.getConnectionRule());
                    	    	        }
                    	           		setWithLastConsumed(
                    	           			current, 
                    	           			"port",
                    	            		lv_port_109_0, 
                    	            		"STRING");
                    	    	    

                    	    }


                    	    }


                    	    }


                    	    }

                    	     
                    	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConnectionAccess().getUnorderedGroup_2_3_1());
                    	    	 				

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 6 :
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1936:4: ({...}? => ( ({...}? => (otherlv_110= ',' otherlv_111= 'Pool-Size' otherlv_112= '=' ( (lv_poolsize_113_0= RULE_STRING ) ) ) ) ) )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1936:4: ({...}? => ( ({...}? => (otherlv_110= ',' otherlv_111= 'Pool-Size' otherlv_112= '=' ( (lv_poolsize_113_0= RULE_STRING ) ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1937:5: {...}? => ( ({...}? => (otherlv_110= ',' otherlv_111= 'Pool-Size' otherlv_112= '=' ( (lv_poolsize_113_0= RULE_STRING ) ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_3_1(), 5) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_3_1(), 5)");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1937:111: ( ({...}? => (otherlv_110= ',' otherlv_111= 'Pool-Size' otherlv_112= '=' ( (lv_poolsize_113_0= RULE_STRING ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1938:6: ({...}? => (otherlv_110= ',' otherlv_111= 'Pool-Size' otherlv_112= '=' ( (lv_poolsize_113_0= RULE_STRING ) ) ) )
                    	    {
                    	     
                    	    	 				  getUnorderedGroupHelper().select(grammarAccess.getConnectionAccess().getUnorderedGroup_2_3_1(), 5);
                    	    	 				
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1941:6: ({...}? => (otherlv_110= ',' otherlv_111= 'Pool-Size' otherlv_112= '=' ( (lv_poolsize_113_0= RULE_STRING ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1941:7: {...}? => (otherlv_110= ',' otherlv_111= 'Pool-Size' otherlv_112= '=' ( (lv_poolsize_113_0= RULE_STRING ) ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "true");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1941:16: (otherlv_110= ',' otherlv_111= 'Pool-Size' otherlv_112= '=' ( (lv_poolsize_113_0= RULE_STRING ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1941:18: otherlv_110= ',' otherlv_111= 'Pool-Size' otherlv_112= '=' ( (lv_poolsize_113_0= RULE_STRING ) )
                    	    {
                    	    otherlv_110=(Token)match(input,28,FOLLOW_28_in_ruleConnection4817); 

                    	        	newLeafNode(otherlv_110, grammarAccess.getConnectionAccess().getCommaKeyword_2_3_1_5_0());
                    	        
                    	    otherlv_111=(Token)match(input,34,FOLLOW_34_in_ruleConnection4829); 

                    	        	newLeafNode(otherlv_111, grammarAccess.getConnectionAccess().getPoolSizeKeyword_2_3_1_5_1());
                    	        
                    	    otherlv_112=(Token)match(input,27,FOLLOW_27_in_ruleConnection4841); 

                    	        	newLeafNode(otherlv_112, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_3_1_5_2());
                    	        
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1953:1: ( (lv_poolsize_113_0= RULE_STRING ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1954:1: (lv_poolsize_113_0= RULE_STRING )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1954:1: (lv_poolsize_113_0= RULE_STRING )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1955:3: lv_poolsize_113_0= RULE_STRING
                    	    {
                    	    lv_poolsize_113_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConnection4858); 

                    	    			newLeafNode(lv_poolsize_113_0, grammarAccess.getConnectionAccess().getPoolsizeSTRINGTerminalRuleCall_2_3_1_5_3_0()); 
                    	    		

                    	    	        if (current==null) {
                    	    	            current = createModelElement(grammarAccess.getConnectionRule());
                    	    	        }
                    	           		setWithLastConsumed(
                    	           			current, 
                    	           			"poolsize",
                    	            		lv_poolsize_113_0, 
                    	            		"STRING");
                    	    	    

                    	    }


                    	    }


                    	    }


                    	    }

                    	     
                    	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConnectionAccess().getUnorderedGroup_2_3_1());
                    	    	 				

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt17 >= 1 ) break loop17;
                                EarlyExitException eee =
                                    new EarlyExitException(17, input);
                                throw eee;
                        }
                        cnt17++;
                    } while (true);

                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getConnectionAccess().getUnorderedGroup_2_3_1()) ) {
                        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canLeave(grammarAccess.getConnectionAccess().getUnorderedGroup_2_3_1())");
                    }

                    }


                    }

                     
                    	  getUnorderedGroupHelper().leave(grammarAccess.getConnectionAccess().getUnorderedGroup_2_3_1());
                    	

                    }


                    }


                    }
                    break;
                case 5 :
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1987:6: ( (otherlv_114= 'URL' otherlv_115= '=' ( (lv_url_116_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_118= ',' otherlv_119= 'Type' otherlv_120= '=' ( (lv_type_121_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_122= ',' otherlv_123= 'Database' otherlv_124= '=' ( (lv_dbname_125_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_126= ',' otherlv_127= 'User' otherlv_128= '=' ( (lv_user_129_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_130= ',' otherlv_131= 'Password' otherlv_132= '=' ( (lv_password_133_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_134= ',' otherlv_135= 'Port' otherlv_136= '=' ( (lv_port_137_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_138= ',' otherlv_139= 'Pool-Size' otherlv_140= '=' ( (lv_poolsize_141_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) )
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1987:6: ( (otherlv_114= 'URL' otherlv_115= '=' ( (lv_url_116_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_118= ',' otherlv_119= 'Type' otherlv_120= '=' ( (lv_type_121_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_122= ',' otherlv_123= 'Database' otherlv_124= '=' ( (lv_dbname_125_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_126= ',' otherlv_127= 'User' otherlv_128= '=' ( (lv_user_129_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_130= ',' otherlv_131= 'Password' otherlv_132= '=' ( (lv_password_133_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_134= ',' otherlv_135= 'Port' otherlv_136= '=' ( (lv_port_137_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_138= ',' otherlv_139= 'Pool-Size' otherlv_140= '=' ( (lv_poolsize_141_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1987:7: (otherlv_114= 'URL' otherlv_115= '=' ( (lv_url_116_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_118= ',' otherlv_119= 'Type' otherlv_120= '=' ( (lv_type_121_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_122= ',' otherlv_123= 'Database' otherlv_124= '=' ( (lv_dbname_125_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_126= ',' otherlv_127= 'User' otherlv_128= '=' ( (lv_user_129_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_130= ',' otherlv_131= 'Password' otherlv_132= '=' ( (lv_password_133_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_134= ',' otherlv_135= 'Port' otherlv_136= '=' ( (lv_port_137_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_138= ',' otherlv_139= 'Pool-Size' otherlv_140= '=' ( (lv_poolsize_141_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) )
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1987:7: (otherlv_114= 'URL' otherlv_115= '=' ( (lv_url_116_0= RULE_STRING ) ) )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1987:9: otherlv_114= 'URL' otherlv_115= '=' ( (lv_url_116_0= RULE_STRING ) )
                    {
                    otherlv_114=(Token)match(input,32,FOLLOW_32_in_ruleConnection4931); 

                        	newLeafNode(otherlv_114, grammarAccess.getConnectionAccess().getURLKeyword_2_4_0_0());
                        
                    otherlv_115=(Token)match(input,27,FOLLOW_27_in_ruleConnection4943); 

                        	newLeafNode(otherlv_115, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_4_0_1());
                        
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1995:1: ( (lv_url_116_0= RULE_STRING ) )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1996:1: (lv_url_116_0= RULE_STRING )
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1996:1: (lv_url_116_0= RULE_STRING )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:1997:3: lv_url_116_0= RULE_STRING
                    {
                    lv_url_116_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConnection4960); 

                    			newLeafNode(lv_url_116_0, grammarAccess.getConnectionAccess().getUrlSTRINGTerminalRuleCall_2_4_0_2_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getConnectionRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"url",
                            		lv_url_116_0, 
                            		"STRING");
                    	    

                    }


                    }


                    }

                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2013:3: ( ( ( ( ({...}? => ( ({...}? => (otherlv_118= ',' otherlv_119= 'Type' otherlv_120= '=' ( (lv_type_121_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_122= ',' otherlv_123= 'Database' otherlv_124= '=' ( (lv_dbname_125_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_126= ',' otherlv_127= 'User' otherlv_128= '=' ( (lv_user_129_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_130= ',' otherlv_131= 'Password' otherlv_132= '=' ( (lv_password_133_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_134= ',' otherlv_135= 'Port' otherlv_136= '=' ( (lv_port_137_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_138= ',' otherlv_139= 'Pool-Size' otherlv_140= '=' ( (lv_poolsize_141_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2015:1: ( ( ( ({...}? => ( ({...}? => (otherlv_118= ',' otherlv_119= 'Type' otherlv_120= '=' ( (lv_type_121_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_122= ',' otherlv_123= 'Database' otherlv_124= '=' ( (lv_dbname_125_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_126= ',' otherlv_127= 'User' otherlv_128= '=' ( (lv_user_129_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_130= ',' otherlv_131= 'Password' otherlv_132= '=' ( (lv_password_133_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_134= ',' otherlv_135= 'Port' otherlv_136= '=' ( (lv_port_137_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_138= ',' otherlv_139= 'Pool-Size' otherlv_140= '=' ( (lv_poolsize_141_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) )
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2015:1: ( ( ( ({...}? => ( ({...}? => (otherlv_118= ',' otherlv_119= 'Type' otherlv_120= '=' ( (lv_type_121_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_122= ',' otherlv_123= 'Database' otherlv_124= '=' ( (lv_dbname_125_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_126= ',' otherlv_127= 'User' otherlv_128= '=' ( (lv_user_129_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_130= ',' otherlv_131= 'Password' otherlv_132= '=' ( (lv_password_133_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_134= ',' otherlv_135= 'Port' otherlv_136= '=' ( (lv_port_137_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_138= ',' otherlv_139= 'Pool-Size' otherlv_140= '=' ( (lv_poolsize_141_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2016:2: ( ( ({...}? => ( ({...}? => (otherlv_118= ',' otherlv_119= 'Type' otherlv_120= '=' ( (lv_type_121_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_122= ',' otherlv_123= 'Database' otherlv_124= '=' ( (lv_dbname_125_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_126= ',' otherlv_127= 'User' otherlv_128= '=' ( (lv_user_129_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_130= ',' otherlv_131= 'Password' otherlv_132= '=' ( (lv_password_133_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_134= ',' otherlv_135= 'Port' otherlv_136= '=' ( (lv_port_137_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_138= ',' otherlv_139= 'Pool-Size' otherlv_140= '=' ( (lv_poolsize_141_0= RULE_STRING ) ) ) ) ) ) )+ {...}?)
                    {
                     
                    	  getUnorderedGroupHelper().enter(grammarAccess.getConnectionAccess().getUnorderedGroup_2_4_1());
                    	
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2019:2: ( ( ({...}? => ( ({...}? => (otherlv_118= ',' otherlv_119= 'Type' otherlv_120= '=' ( (lv_type_121_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_122= ',' otherlv_123= 'Database' otherlv_124= '=' ( (lv_dbname_125_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_126= ',' otherlv_127= 'User' otherlv_128= '=' ( (lv_user_129_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_130= ',' otherlv_131= 'Password' otherlv_132= '=' ( (lv_password_133_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_134= ',' otherlv_135= 'Port' otherlv_136= '=' ( (lv_port_137_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_138= ',' otherlv_139= 'Pool-Size' otherlv_140= '=' ( (lv_poolsize_141_0= RULE_STRING ) ) ) ) ) ) )+ {...}?)
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2020:3: ( ({...}? => ( ({...}? => (otherlv_118= ',' otherlv_119= 'Type' otherlv_120= '=' ( (lv_type_121_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_122= ',' otherlv_123= 'Database' otherlv_124= '=' ( (lv_dbname_125_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_126= ',' otherlv_127= 'User' otherlv_128= '=' ( (lv_user_129_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_130= ',' otherlv_131= 'Password' otherlv_132= '=' ( (lv_password_133_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_134= ',' otherlv_135= 'Port' otherlv_136= '=' ( (lv_port_137_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_138= ',' otherlv_139= 'Pool-Size' otherlv_140= '=' ( (lv_poolsize_141_0= RULE_STRING ) ) ) ) ) ) )+ {...}?
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2020:3: ( ({...}? => ( ({...}? => (otherlv_118= ',' otherlv_119= 'Type' otherlv_120= '=' ( (lv_type_121_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_122= ',' otherlv_123= 'Database' otherlv_124= '=' ( (lv_dbname_125_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_126= ',' otherlv_127= 'User' otherlv_128= '=' ( (lv_user_129_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_130= ',' otherlv_131= 'Password' otherlv_132= '=' ( (lv_password_133_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_134= ',' otherlv_135= 'Port' otherlv_136= '=' ( (lv_port_137_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_138= ',' otherlv_139= 'Pool-Size' otherlv_140= '=' ( (lv_poolsize_141_0= RULE_STRING ) ) ) ) ) ) )+
                    int cnt18=0;
                    loop18:
                    do {
                        int alt18=7;
                        int LA18_0 = input.LA(1);

                        if ( LA18_0 ==28 && ( getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_4_1(), 4) || getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_4_1(), 3) || getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_4_1(), 2) || getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_4_1(), 5) || getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_4_1(), 0) || getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_4_1(), 1) ) ) {
                            int LA18_2 = input.LA(2);

                            if ( LA18_2 ==33 && getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_4_1(), 4) ) {
                                alt18=5;
                            }
                            else if ( LA18_2 ==34 && getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_4_1(), 5) ) {
                                alt18=6;
                            }
                            else if ( LA18_2 ==31 && getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_4_1(), 3) ) {
                                alt18=4;
                            }
                            else if ( LA18_2 ==26 && getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_4_1(), 0) ) {
                                alt18=1;
                            }
                            else if ( LA18_2 ==30 && getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_4_1(), 2) ) {
                                alt18=3;
                            }
                            else if ( LA18_2 ==29 && getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_4_1(), 1) ) {
                                alt18=2;
                            }


                        }


                        switch (alt18) {
                    	case 1 :
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2022:4: ({...}? => ( ({...}? => (otherlv_118= ',' otherlv_119= 'Type' otherlv_120= '=' ( (lv_type_121_0= ruleDataBase ) ) ) ) ) )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2022:4: ({...}? => ( ({...}? => (otherlv_118= ',' otherlv_119= 'Type' otherlv_120= '=' ( (lv_type_121_0= ruleDataBase ) ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2023:5: {...}? => ( ({...}? => (otherlv_118= ',' otherlv_119= 'Type' otherlv_120= '=' ( (lv_type_121_0= ruleDataBase ) ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_4_1(), 0) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_4_1(), 0)");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2023:111: ( ({...}? => (otherlv_118= ',' otherlv_119= 'Type' otherlv_120= '=' ( (lv_type_121_0= ruleDataBase ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2024:6: ({...}? => (otherlv_118= ',' otherlv_119= 'Type' otherlv_120= '=' ( (lv_type_121_0= ruleDataBase ) ) ) )
                    	    {
                    	     
                    	    	 				  getUnorderedGroupHelper().select(grammarAccess.getConnectionAccess().getUnorderedGroup_2_4_1(), 0);
                    	    	 				
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2027:6: ({...}? => (otherlv_118= ',' otherlv_119= 'Type' otherlv_120= '=' ( (lv_type_121_0= ruleDataBase ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2027:7: {...}? => (otherlv_118= ',' otherlv_119= 'Type' otherlv_120= '=' ( (lv_type_121_0= ruleDataBase ) ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "true");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2027:16: (otherlv_118= ',' otherlv_119= 'Type' otherlv_120= '=' ( (lv_type_121_0= ruleDataBase ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2027:18: otherlv_118= ',' otherlv_119= 'Type' otherlv_120= '=' ( (lv_type_121_0= ruleDataBase ) )
                    	    {
                    	    otherlv_118=(Token)match(input,28,FOLLOW_28_in_ruleConnection5024); 

                    	        	newLeafNode(otherlv_118, grammarAccess.getConnectionAccess().getCommaKeyword_2_4_1_0_0());
                    	        
                    	    otherlv_119=(Token)match(input,26,FOLLOW_26_in_ruleConnection5036); 

                    	        	newLeafNode(otherlv_119, grammarAccess.getConnectionAccess().getTypeKeyword_2_4_1_0_1());
                    	        
                    	    otherlv_120=(Token)match(input,27,FOLLOW_27_in_ruleConnection5048); 

                    	        	newLeafNode(otherlv_120, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_4_1_0_2());
                    	        
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2039:1: ( (lv_type_121_0= ruleDataBase ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2040:1: (lv_type_121_0= ruleDataBase )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2040:1: (lv_type_121_0= ruleDataBase )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2041:3: lv_type_121_0= ruleDataBase
                    	    {
                    	     
                    	    	        newCompositeNode(grammarAccess.getConnectionAccess().getTypeDataBaseParserRuleCall_2_4_1_0_3_0()); 
                    	    	    
                    	    pushFollow(FOLLOW_ruleDataBase_in_ruleConnection5069);
                    	    lv_type_121_0=ruleDataBase();

                    	    state._fsp--;


                    	    	        if (current==null) {
                    	    	            current = createModelElementForParent(grammarAccess.getConnectionRule());
                    	    	        }
                    	           		set(
                    	           			current, 
                    	           			"type",
                    	            		lv_type_121_0, 
                    	            		"DataBase");
                    	    	        afterParserOrEnumRuleCall();
                    	    	    

                    	    }


                    	    }


                    	    }


                    	    }

                    	     
                    	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConnectionAccess().getUnorderedGroup_2_4_1());
                    	    	 				

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 2 :
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2064:4: ({...}? => ( ({...}? => (otherlv_122= ',' otherlv_123= 'Database' otherlv_124= '=' ( (lv_dbname_125_0= RULE_STRING ) ) ) ) ) )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2064:4: ({...}? => ( ({...}? => (otherlv_122= ',' otherlv_123= 'Database' otherlv_124= '=' ( (lv_dbname_125_0= RULE_STRING ) ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2065:5: {...}? => ( ({...}? => (otherlv_122= ',' otherlv_123= 'Database' otherlv_124= '=' ( (lv_dbname_125_0= RULE_STRING ) ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_4_1(), 1) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_4_1(), 1)");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2065:111: ( ({...}? => (otherlv_122= ',' otherlv_123= 'Database' otherlv_124= '=' ( (lv_dbname_125_0= RULE_STRING ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2066:6: ({...}? => (otherlv_122= ',' otherlv_123= 'Database' otherlv_124= '=' ( (lv_dbname_125_0= RULE_STRING ) ) ) )
                    	    {
                    	     
                    	    	 				  getUnorderedGroupHelper().select(grammarAccess.getConnectionAccess().getUnorderedGroup_2_4_1(), 1);
                    	    	 				
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2069:6: ({...}? => (otherlv_122= ',' otherlv_123= 'Database' otherlv_124= '=' ( (lv_dbname_125_0= RULE_STRING ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2069:7: {...}? => (otherlv_122= ',' otherlv_123= 'Database' otherlv_124= '=' ( (lv_dbname_125_0= RULE_STRING ) ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "true");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2069:16: (otherlv_122= ',' otherlv_123= 'Database' otherlv_124= '=' ( (lv_dbname_125_0= RULE_STRING ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2069:18: otherlv_122= ',' otherlv_123= 'Database' otherlv_124= '=' ( (lv_dbname_125_0= RULE_STRING ) )
                    	    {
                    	    otherlv_122=(Token)match(input,28,FOLLOW_28_in_ruleConnection5137); 

                    	        	newLeafNode(otherlv_122, grammarAccess.getConnectionAccess().getCommaKeyword_2_4_1_1_0());
                    	        
                    	    otherlv_123=(Token)match(input,29,FOLLOW_29_in_ruleConnection5149); 

                    	        	newLeafNode(otherlv_123, grammarAccess.getConnectionAccess().getDatabaseKeyword_2_4_1_1_1());
                    	        
                    	    otherlv_124=(Token)match(input,27,FOLLOW_27_in_ruleConnection5161); 

                    	        	newLeafNode(otherlv_124, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_4_1_1_2());
                    	        
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2081:1: ( (lv_dbname_125_0= RULE_STRING ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2082:1: (lv_dbname_125_0= RULE_STRING )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2082:1: (lv_dbname_125_0= RULE_STRING )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2083:3: lv_dbname_125_0= RULE_STRING
                    	    {
                    	    lv_dbname_125_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConnection5178); 

                    	    			newLeafNode(lv_dbname_125_0, grammarAccess.getConnectionAccess().getDbnameSTRINGTerminalRuleCall_2_4_1_1_3_0()); 
                    	    		

                    	    	        if (current==null) {
                    	    	            current = createModelElement(grammarAccess.getConnectionRule());
                    	    	        }
                    	           		setWithLastConsumed(
                    	           			current, 
                    	           			"dbname",
                    	            		lv_dbname_125_0, 
                    	            		"STRING");
                    	    	    

                    	    }


                    	    }


                    	    }


                    	    }

                    	     
                    	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConnectionAccess().getUnorderedGroup_2_4_1());
                    	    	 				

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 3 :
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2106:4: ({...}? => ( ({...}? => (otherlv_126= ',' otherlv_127= 'User' otherlv_128= '=' ( (lv_user_129_0= RULE_STRING ) ) ) ) ) )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2106:4: ({...}? => ( ({...}? => (otherlv_126= ',' otherlv_127= 'User' otherlv_128= '=' ( (lv_user_129_0= RULE_STRING ) ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2107:5: {...}? => ( ({...}? => (otherlv_126= ',' otherlv_127= 'User' otherlv_128= '=' ( (lv_user_129_0= RULE_STRING ) ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_4_1(), 2) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_4_1(), 2)");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2107:111: ( ({...}? => (otherlv_126= ',' otherlv_127= 'User' otherlv_128= '=' ( (lv_user_129_0= RULE_STRING ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2108:6: ({...}? => (otherlv_126= ',' otherlv_127= 'User' otherlv_128= '=' ( (lv_user_129_0= RULE_STRING ) ) ) )
                    	    {
                    	     
                    	    	 				  getUnorderedGroupHelper().select(grammarAccess.getConnectionAccess().getUnorderedGroup_2_4_1(), 2);
                    	    	 				
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2111:6: ({...}? => (otherlv_126= ',' otherlv_127= 'User' otherlv_128= '=' ( (lv_user_129_0= RULE_STRING ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2111:7: {...}? => (otherlv_126= ',' otherlv_127= 'User' otherlv_128= '=' ( (lv_user_129_0= RULE_STRING ) ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "true");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2111:16: (otherlv_126= ',' otherlv_127= 'User' otherlv_128= '=' ( (lv_user_129_0= RULE_STRING ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2111:18: otherlv_126= ',' otherlv_127= 'User' otherlv_128= '=' ( (lv_user_129_0= RULE_STRING ) )
                    	    {
                    	    otherlv_126=(Token)match(input,28,FOLLOW_28_in_ruleConnection5251); 

                    	        	newLeafNode(otherlv_126, grammarAccess.getConnectionAccess().getCommaKeyword_2_4_1_2_0());
                    	        
                    	    otherlv_127=(Token)match(input,30,FOLLOW_30_in_ruleConnection5263); 

                    	        	newLeafNode(otherlv_127, grammarAccess.getConnectionAccess().getUserKeyword_2_4_1_2_1());
                    	        
                    	    otherlv_128=(Token)match(input,27,FOLLOW_27_in_ruleConnection5275); 

                    	        	newLeafNode(otherlv_128, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_4_1_2_2());
                    	        
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2123:1: ( (lv_user_129_0= RULE_STRING ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2124:1: (lv_user_129_0= RULE_STRING )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2124:1: (lv_user_129_0= RULE_STRING )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2125:3: lv_user_129_0= RULE_STRING
                    	    {
                    	    lv_user_129_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConnection5292); 

                    	    			newLeafNode(lv_user_129_0, grammarAccess.getConnectionAccess().getUserSTRINGTerminalRuleCall_2_4_1_2_3_0()); 
                    	    		

                    	    	        if (current==null) {
                    	    	            current = createModelElement(grammarAccess.getConnectionRule());
                    	    	        }
                    	           		setWithLastConsumed(
                    	           			current, 
                    	           			"user",
                    	            		lv_user_129_0, 
                    	            		"STRING");
                    	    	    

                    	    }


                    	    }


                    	    }


                    	    }

                    	     
                    	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConnectionAccess().getUnorderedGroup_2_4_1());
                    	    	 				

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 4 :
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2148:4: ({...}? => ( ({...}? => (otherlv_130= ',' otherlv_131= 'Password' otherlv_132= '=' ( (lv_password_133_0= RULE_STRING ) ) ) ) ) )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2148:4: ({...}? => ( ({...}? => (otherlv_130= ',' otherlv_131= 'Password' otherlv_132= '=' ( (lv_password_133_0= RULE_STRING ) ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2149:5: {...}? => ( ({...}? => (otherlv_130= ',' otherlv_131= 'Password' otherlv_132= '=' ( (lv_password_133_0= RULE_STRING ) ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_4_1(), 3) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_4_1(), 3)");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2149:111: ( ({...}? => (otherlv_130= ',' otherlv_131= 'Password' otherlv_132= '=' ( (lv_password_133_0= RULE_STRING ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2150:6: ({...}? => (otherlv_130= ',' otherlv_131= 'Password' otherlv_132= '=' ( (lv_password_133_0= RULE_STRING ) ) ) )
                    	    {
                    	     
                    	    	 				  getUnorderedGroupHelper().select(grammarAccess.getConnectionAccess().getUnorderedGroup_2_4_1(), 3);
                    	    	 				
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2153:6: ({...}? => (otherlv_130= ',' otherlv_131= 'Password' otherlv_132= '=' ( (lv_password_133_0= RULE_STRING ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2153:7: {...}? => (otherlv_130= ',' otherlv_131= 'Password' otherlv_132= '=' ( (lv_password_133_0= RULE_STRING ) ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "true");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2153:16: (otherlv_130= ',' otherlv_131= 'Password' otherlv_132= '=' ( (lv_password_133_0= RULE_STRING ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2153:18: otherlv_130= ',' otherlv_131= 'Password' otherlv_132= '=' ( (lv_password_133_0= RULE_STRING ) )
                    	    {
                    	    otherlv_130=(Token)match(input,28,FOLLOW_28_in_ruleConnection5365); 

                    	        	newLeafNode(otherlv_130, grammarAccess.getConnectionAccess().getCommaKeyword_2_4_1_3_0());
                    	        
                    	    otherlv_131=(Token)match(input,31,FOLLOW_31_in_ruleConnection5377); 

                    	        	newLeafNode(otherlv_131, grammarAccess.getConnectionAccess().getPasswordKeyword_2_4_1_3_1());
                    	        
                    	    otherlv_132=(Token)match(input,27,FOLLOW_27_in_ruleConnection5389); 

                    	        	newLeafNode(otherlv_132, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_4_1_3_2());
                    	        
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2165:1: ( (lv_password_133_0= RULE_STRING ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2166:1: (lv_password_133_0= RULE_STRING )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2166:1: (lv_password_133_0= RULE_STRING )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2167:3: lv_password_133_0= RULE_STRING
                    	    {
                    	    lv_password_133_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConnection5406); 

                    	    			newLeafNode(lv_password_133_0, grammarAccess.getConnectionAccess().getPasswordSTRINGTerminalRuleCall_2_4_1_3_3_0()); 
                    	    		

                    	    	        if (current==null) {
                    	    	            current = createModelElement(grammarAccess.getConnectionRule());
                    	    	        }
                    	           		setWithLastConsumed(
                    	           			current, 
                    	           			"password",
                    	            		lv_password_133_0, 
                    	            		"STRING");
                    	    	    

                    	    }


                    	    }


                    	    }


                    	    }

                    	     
                    	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConnectionAccess().getUnorderedGroup_2_4_1());
                    	    	 				

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 5 :
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2190:4: ({...}? => ( ({...}? => (otherlv_134= ',' otherlv_135= 'Port' otherlv_136= '=' ( (lv_port_137_0= RULE_STRING ) ) ) ) ) )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2190:4: ({...}? => ( ({...}? => (otherlv_134= ',' otherlv_135= 'Port' otherlv_136= '=' ( (lv_port_137_0= RULE_STRING ) ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2191:5: {...}? => ( ({...}? => (otherlv_134= ',' otherlv_135= 'Port' otherlv_136= '=' ( (lv_port_137_0= RULE_STRING ) ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_4_1(), 4) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_4_1(), 4)");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2191:111: ( ({...}? => (otherlv_134= ',' otherlv_135= 'Port' otherlv_136= '=' ( (lv_port_137_0= RULE_STRING ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2192:6: ({...}? => (otherlv_134= ',' otherlv_135= 'Port' otherlv_136= '=' ( (lv_port_137_0= RULE_STRING ) ) ) )
                    	    {
                    	     
                    	    	 				  getUnorderedGroupHelper().select(grammarAccess.getConnectionAccess().getUnorderedGroup_2_4_1(), 4);
                    	    	 				
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2195:6: ({...}? => (otherlv_134= ',' otherlv_135= 'Port' otherlv_136= '=' ( (lv_port_137_0= RULE_STRING ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2195:7: {...}? => (otherlv_134= ',' otherlv_135= 'Port' otherlv_136= '=' ( (lv_port_137_0= RULE_STRING ) ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "true");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2195:16: (otherlv_134= ',' otherlv_135= 'Port' otherlv_136= '=' ( (lv_port_137_0= RULE_STRING ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2195:18: otherlv_134= ',' otherlv_135= 'Port' otherlv_136= '=' ( (lv_port_137_0= RULE_STRING ) )
                    	    {
                    	    otherlv_134=(Token)match(input,28,FOLLOW_28_in_ruleConnection5479); 

                    	        	newLeafNode(otherlv_134, grammarAccess.getConnectionAccess().getCommaKeyword_2_4_1_4_0());
                    	        
                    	    otherlv_135=(Token)match(input,33,FOLLOW_33_in_ruleConnection5491); 

                    	        	newLeafNode(otherlv_135, grammarAccess.getConnectionAccess().getPortKeyword_2_4_1_4_1());
                    	        
                    	    otherlv_136=(Token)match(input,27,FOLLOW_27_in_ruleConnection5503); 

                    	        	newLeafNode(otherlv_136, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_4_1_4_2());
                    	        
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2207:1: ( (lv_port_137_0= RULE_STRING ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2208:1: (lv_port_137_0= RULE_STRING )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2208:1: (lv_port_137_0= RULE_STRING )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2209:3: lv_port_137_0= RULE_STRING
                    	    {
                    	    lv_port_137_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConnection5520); 

                    	    			newLeafNode(lv_port_137_0, grammarAccess.getConnectionAccess().getPortSTRINGTerminalRuleCall_2_4_1_4_3_0()); 
                    	    		

                    	    	        if (current==null) {
                    	    	            current = createModelElement(grammarAccess.getConnectionRule());
                    	    	        }
                    	           		setWithLastConsumed(
                    	           			current, 
                    	           			"port",
                    	            		lv_port_137_0, 
                    	            		"STRING");
                    	    	    

                    	    }


                    	    }


                    	    }


                    	    }

                    	     
                    	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConnectionAccess().getUnorderedGroup_2_4_1());
                    	    	 				

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 6 :
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2232:4: ({...}? => ( ({...}? => (otherlv_138= ',' otherlv_139= 'Pool-Size' otherlv_140= '=' ( (lv_poolsize_141_0= RULE_STRING ) ) ) ) ) )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2232:4: ({...}? => ( ({...}? => (otherlv_138= ',' otherlv_139= 'Pool-Size' otherlv_140= '=' ( (lv_poolsize_141_0= RULE_STRING ) ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2233:5: {...}? => ( ({...}? => (otherlv_138= ',' otherlv_139= 'Pool-Size' otherlv_140= '=' ( (lv_poolsize_141_0= RULE_STRING ) ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_4_1(), 5) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_4_1(), 5)");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2233:111: ( ({...}? => (otherlv_138= ',' otherlv_139= 'Pool-Size' otherlv_140= '=' ( (lv_poolsize_141_0= RULE_STRING ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2234:6: ({...}? => (otherlv_138= ',' otherlv_139= 'Pool-Size' otherlv_140= '=' ( (lv_poolsize_141_0= RULE_STRING ) ) ) )
                    	    {
                    	     
                    	    	 				  getUnorderedGroupHelper().select(grammarAccess.getConnectionAccess().getUnorderedGroup_2_4_1(), 5);
                    	    	 				
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2237:6: ({...}? => (otherlv_138= ',' otherlv_139= 'Pool-Size' otherlv_140= '=' ( (lv_poolsize_141_0= RULE_STRING ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2237:7: {...}? => (otherlv_138= ',' otherlv_139= 'Pool-Size' otherlv_140= '=' ( (lv_poolsize_141_0= RULE_STRING ) ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "true");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2237:16: (otherlv_138= ',' otherlv_139= 'Pool-Size' otherlv_140= '=' ( (lv_poolsize_141_0= RULE_STRING ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2237:18: otherlv_138= ',' otherlv_139= 'Pool-Size' otherlv_140= '=' ( (lv_poolsize_141_0= RULE_STRING ) )
                    	    {
                    	    otherlv_138=(Token)match(input,28,FOLLOW_28_in_ruleConnection5593); 

                    	        	newLeafNode(otherlv_138, grammarAccess.getConnectionAccess().getCommaKeyword_2_4_1_5_0());
                    	        
                    	    otherlv_139=(Token)match(input,34,FOLLOW_34_in_ruleConnection5605); 

                    	        	newLeafNode(otherlv_139, grammarAccess.getConnectionAccess().getPoolSizeKeyword_2_4_1_5_1());
                    	        
                    	    otherlv_140=(Token)match(input,27,FOLLOW_27_in_ruleConnection5617); 

                    	        	newLeafNode(otherlv_140, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_4_1_5_2());
                    	        
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2249:1: ( (lv_poolsize_141_0= RULE_STRING ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2250:1: (lv_poolsize_141_0= RULE_STRING )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2250:1: (lv_poolsize_141_0= RULE_STRING )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2251:3: lv_poolsize_141_0= RULE_STRING
                    	    {
                    	    lv_poolsize_141_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConnection5634); 

                    	    			newLeafNode(lv_poolsize_141_0, grammarAccess.getConnectionAccess().getPoolsizeSTRINGTerminalRuleCall_2_4_1_5_3_0()); 
                    	    		

                    	    	        if (current==null) {
                    	    	            current = createModelElement(grammarAccess.getConnectionRule());
                    	    	        }
                    	           		setWithLastConsumed(
                    	           			current, 
                    	           			"poolsize",
                    	            		lv_poolsize_141_0, 
                    	            		"STRING");
                    	    	    

                    	    }


                    	    }


                    	    }


                    	    }

                    	     
                    	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConnectionAccess().getUnorderedGroup_2_4_1());
                    	    	 				

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt18 >= 1 ) break loop18;
                                EarlyExitException eee =
                                    new EarlyExitException(18, input);
                                throw eee;
                        }
                        cnt18++;
                    } while (true);

                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getConnectionAccess().getUnorderedGroup_2_4_1()) ) {
                        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canLeave(grammarAccess.getConnectionAccess().getUnorderedGroup_2_4_1())");
                    }

                    }


                    }

                     
                    	  getUnorderedGroupHelper().leave(grammarAccess.getConnectionAccess().getUnorderedGroup_2_4_1());
                    	

                    }


                    }


                    }
                    break;
                case 6 :
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2283:6: ( (otherlv_142= 'Port' otherlv_143= '=' ( (lv_port_144_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_146= ',' otherlv_147= 'Type' otherlv_148= '=' ( (lv_type_149_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_150= ',' otherlv_151= 'Database' otherlv_152= '=' ( (lv_dbname_153_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_154= ',' otherlv_155= 'User' otherlv_156= '=' ( (lv_user_157_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_158= ',' otherlv_159= 'Password' otherlv_160= '=' ( (lv_password_161_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_162= ',' otherlv_163= 'URL' otherlv_164= '=' ( (lv_url_165_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_166= ',' otherlv_167= 'Pool-Size' otherlv_168= '=' ( (lv_poolsize_169_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) )
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2283:6: ( (otherlv_142= 'Port' otherlv_143= '=' ( (lv_port_144_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_146= ',' otherlv_147= 'Type' otherlv_148= '=' ( (lv_type_149_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_150= ',' otherlv_151= 'Database' otherlv_152= '=' ( (lv_dbname_153_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_154= ',' otherlv_155= 'User' otherlv_156= '=' ( (lv_user_157_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_158= ',' otherlv_159= 'Password' otherlv_160= '=' ( (lv_password_161_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_162= ',' otherlv_163= 'URL' otherlv_164= '=' ( (lv_url_165_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_166= ',' otherlv_167= 'Pool-Size' otherlv_168= '=' ( (lv_poolsize_169_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2283:7: (otherlv_142= 'Port' otherlv_143= '=' ( (lv_port_144_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_146= ',' otherlv_147= 'Type' otherlv_148= '=' ( (lv_type_149_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_150= ',' otherlv_151= 'Database' otherlv_152= '=' ( (lv_dbname_153_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_154= ',' otherlv_155= 'User' otherlv_156= '=' ( (lv_user_157_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_158= ',' otherlv_159= 'Password' otherlv_160= '=' ( (lv_password_161_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_162= ',' otherlv_163= 'URL' otherlv_164= '=' ( (lv_url_165_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_166= ',' otherlv_167= 'Pool-Size' otherlv_168= '=' ( (lv_poolsize_169_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) )
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2283:7: (otherlv_142= 'Port' otherlv_143= '=' ( (lv_port_144_0= RULE_STRING ) ) )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2283:9: otherlv_142= 'Port' otherlv_143= '=' ( (lv_port_144_0= RULE_STRING ) )
                    {
                    otherlv_142=(Token)match(input,33,FOLLOW_33_in_ruleConnection5707); 

                        	newLeafNode(otherlv_142, grammarAccess.getConnectionAccess().getPortKeyword_2_5_0_0());
                        
                    otherlv_143=(Token)match(input,27,FOLLOW_27_in_ruleConnection5719); 

                        	newLeafNode(otherlv_143, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_5_0_1());
                        
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2291:1: ( (lv_port_144_0= RULE_STRING ) )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2292:1: (lv_port_144_0= RULE_STRING )
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2292:1: (lv_port_144_0= RULE_STRING )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2293:3: lv_port_144_0= RULE_STRING
                    {
                    lv_port_144_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConnection5736); 

                    			newLeafNode(lv_port_144_0, grammarAccess.getConnectionAccess().getPortSTRINGTerminalRuleCall_2_5_0_2_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getConnectionRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"port",
                            		lv_port_144_0, 
                            		"STRING");
                    	    

                    }


                    }


                    }

                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2309:3: ( ( ( ( ({...}? => ( ({...}? => (otherlv_146= ',' otherlv_147= 'Type' otherlv_148= '=' ( (lv_type_149_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_150= ',' otherlv_151= 'Database' otherlv_152= '=' ( (lv_dbname_153_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_154= ',' otherlv_155= 'User' otherlv_156= '=' ( (lv_user_157_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_158= ',' otherlv_159= 'Password' otherlv_160= '=' ( (lv_password_161_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_162= ',' otherlv_163= 'URL' otherlv_164= '=' ( (lv_url_165_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_166= ',' otherlv_167= 'Pool-Size' otherlv_168= '=' ( (lv_poolsize_169_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2311:1: ( ( ( ({...}? => ( ({...}? => (otherlv_146= ',' otherlv_147= 'Type' otherlv_148= '=' ( (lv_type_149_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_150= ',' otherlv_151= 'Database' otherlv_152= '=' ( (lv_dbname_153_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_154= ',' otherlv_155= 'User' otherlv_156= '=' ( (lv_user_157_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_158= ',' otherlv_159= 'Password' otherlv_160= '=' ( (lv_password_161_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_162= ',' otherlv_163= 'URL' otherlv_164= '=' ( (lv_url_165_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_166= ',' otherlv_167= 'Pool-Size' otherlv_168= '=' ( (lv_poolsize_169_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) )
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2311:1: ( ( ( ({...}? => ( ({...}? => (otherlv_146= ',' otherlv_147= 'Type' otherlv_148= '=' ( (lv_type_149_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_150= ',' otherlv_151= 'Database' otherlv_152= '=' ( (lv_dbname_153_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_154= ',' otherlv_155= 'User' otherlv_156= '=' ( (lv_user_157_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_158= ',' otherlv_159= 'Password' otherlv_160= '=' ( (lv_password_161_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_162= ',' otherlv_163= 'URL' otherlv_164= '=' ( (lv_url_165_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_166= ',' otherlv_167= 'Pool-Size' otherlv_168= '=' ( (lv_poolsize_169_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2312:2: ( ( ({...}? => ( ({...}? => (otherlv_146= ',' otherlv_147= 'Type' otherlv_148= '=' ( (lv_type_149_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_150= ',' otherlv_151= 'Database' otherlv_152= '=' ( (lv_dbname_153_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_154= ',' otherlv_155= 'User' otherlv_156= '=' ( (lv_user_157_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_158= ',' otherlv_159= 'Password' otherlv_160= '=' ( (lv_password_161_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_162= ',' otherlv_163= 'URL' otherlv_164= '=' ( (lv_url_165_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_166= ',' otherlv_167= 'Pool-Size' otherlv_168= '=' ( (lv_poolsize_169_0= RULE_STRING ) ) ) ) ) ) )+ {...}?)
                    {
                     
                    	  getUnorderedGroupHelper().enter(grammarAccess.getConnectionAccess().getUnorderedGroup_2_5_1());
                    	
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2315:2: ( ( ({...}? => ( ({...}? => (otherlv_146= ',' otherlv_147= 'Type' otherlv_148= '=' ( (lv_type_149_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_150= ',' otherlv_151= 'Database' otherlv_152= '=' ( (lv_dbname_153_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_154= ',' otherlv_155= 'User' otherlv_156= '=' ( (lv_user_157_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_158= ',' otherlv_159= 'Password' otherlv_160= '=' ( (lv_password_161_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_162= ',' otherlv_163= 'URL' otherlv_164= '=' ( (lv_url_165_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_166= ',' otherlv_167= 'Pool-Size' otherlv_168= '=' ( (lv_poolsize_169_0= RULE_STRING ) ) ) ) ) ) )+ {...}?)
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2316:3: ( ({...}? => ( ({...}? => (otherlv_146= ',' otherlv_147= 'Type' otherlv_148= '=' ( (lv_type_149_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_150= ',' otherlv_151= 'Database' otherlv_152= '=' ( (lv_dbname_153_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_154= ',' otherlv_155= 'User' otherlv_156= '=' ( (lv_user_157_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_158= ',' otherlv_159= 'Password' otherlv_160= '=' ( (lv_password_161_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_162= ',' otherlv_163= 'URL' otherlv_164= '=' ( (lv_url_165_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_166= ',' otherlv_167= 'Pool-Size' otherlv_168= '=' ( (lv_poolsize_169_0= RULE_STRING ) ) ) ) ) ) )+ {...}?
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2316:3: ( ({...}? => ( ({...}? => (otherlv_146= ',' otherlv_147= 'Type' otherlv_148= '=' ( (lv_type_149_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_150= ',' otherlv_151= 'Database' otherlv_152= '=' ( (lv_dbname_153_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_154= ',' otherlv_155= 'User' otherlv_156= '=' ( (lv_user_157_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_158= ',' otherlv_159= 'Password' otherlv_160= '=' ( (lv_password_161_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_162= ',' otherlv_163= 'URL' otherlv_164= '=' ( (lv_url_165_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_166= ',' otherlv_167= 'Pool-Size' otherlv_168= '=' ( (lv_poolsize_169_0= RULE_STRING ) ) ) ) ) ) )+
                    int cnt19=0;
                    loop19:
                    do {
                        int alt19=7;
                        int LA19_0 = input.LA(1);

                        if ( LA19_0 ==28 && ( getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_5_1(), 5) || getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_5_1(), 0) || getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_5_1(), 2) || getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_5_1(), 3) || getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_5_1(), 4) || getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_5_1(), 1) ) ) {
                            int LA19_2 = input.LA(2);

                            if ( LA19_2 ==34 && getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_5_1(), 5) ) {
                                alt19=6;
                            }
                            else if ( LA19_2 ==29 && getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_5_1(), 1) ) {
                                alt19=2;
                            }
                            else if ( LA19_2 ==26 && getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_5_1(), 0) ) {
                                alt19=1;
                            }
                            else if ( LA19_2 ==32 && getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_5_1(), 4) ) {
                                alt19=5;
                            }
                            else if ( LA19_2 ==31 && getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_5_1(), 3) ) {
                                alt19=4;
                            }
                            else if ( LA19_2 ==30 && getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_5_1(), 2) ) {
                                alt19=3;
                            }


                        }


                        switch (alt19) {
                    	case 1 :
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2318:4: ({...}? => ( ({...}? => (otherlv_146= ',' otherlv_147= 'Type' otherlv_148= '=' ( (lv_type_149_0= ruleDataBase ) ) ) ) ) )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2318:4: ({...}? => ( ({...}? => (otherlv_146= ',' otherlv_147= 'Type' otherlv_148= '=' ( (lv_type_149_0= ruleDataBase ) ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2319:5: {...}? => ( ({...}? => (otherlv_146= ',' otherlv_147= 'Type' otherlv_148= '=' ( (lv_type_149_0= ruleDataBase ) ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_5_1(), 0) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_5_1(), 0)");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2319:111: ( ({...}? => (otherlv_146= ',' otherlv_147= 'Type' otherlv_148= '=' ( (lv_type_149_0= ruleDataBase ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2320:6: ({...}? => (otherlv_146= ',' otherlv_147= 'Type' otherlv_148= '=' ( (lv_type_149_0= ruleDataBase ) ) ) )
                    	    {
                    	     
                    	    	 				  getUnorderedGroupHelper().select(grammarAccess.getConnectionAccess().getUnorderedGroup_2_5_1(), 0);
                    	    	 				
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2323:6: ({...}? => (otherlv_146= ',' otherlv_147= 'Type' otherlv_148= '=' ( (lv_type_149_0= ruleDataBase ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2323:7: {...}? => (otherlv_146= ',' otherlv_147= 'Type' otherlv_148= '=' ( (lv_type_149_0= ruleDataBase ) ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "true");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2323:16: (otherlv_146= ',' otherlv_147= 'Type' otherlv_148= '=' ( (lv_type_149_0= ruleDataBase ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2323:18: otherlv_146= ',' otherlv_147= 'Type' otherlv_148= '=' ( (lv_type_149_0= ruleDataBase ) )
                    	    {
                    	    otherlv_146=(Token)match(input,28,FOLLOW_28_in_ruleConnection5800); 

                    	        	newLeafNode(otherlv_146, grammarAccess.getConnectionAccess().getCommaKeyword_2_5_1_0_0());
                    	        
                    	    otherlv_147=(Token)match(input,26,FOLLOW_26_in_ruleConnection5812); 

                    	        	newLeafNode(otherlv_147, grammarAccess.getConnectionAccess().getTypeKeyword_2_5_1_0_1());
                    	        
                    	    otherlv_148=(Token)match(input,27,FOLLOW_27_in_ruleConnection5824); 

                    	        	newLeafNode(otherlv_148, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_5_1_0_2());
                    	        
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2335:1: ( (lv_type_149_0= ruleDataBase ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2336:1: (lv_type_149_0= ruleDataBase )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2336:1: (lv_type_149_0= ruleDataBase )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2337:3: lv_type_149_0= ruleDataBase
                    	    {
                    	     
                    	    	        newCompositeNode(grammarAccess.getConnectionAccess().getTypeDataBaseParserRuleCall_2_5_1_0_3_0()); 
                    	    	    
                    	    pushFollow(FOLLOW_ruleDataBase_in_ruleConnection5845);
                    	    lv_type_149_0=ruleDataBase();

                    	    state._fsp--;


                    	    	        if (current==null) {
                    	    	            current = createModelElementForParent(grammarAccess.getConnectionRule());
                    	    	        }
                    	           		set(
                    	           			current, 
                    	           			"type",
                    	            		lv_type_149_0, 
                    	            		"DataBase");
                    	    	        afterParserOrEnumRuleCall();
                    	    	    

                    	    }


                    	    }


                    	    }


                    	    }

                    	     
                    	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConnectionAccess().getUnorderedGroup_2_5_1());
                    	    	 				

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 2 :
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2360:4: ({...}? => ( ({...}? => (otherlv_150= ',' otherlv_151= 'Database' otherlv_152= '=' ( (lv_dbname_153_0= RULE_STRING ) ) ) ) ) )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2360:4: ({...}? => ( ({...}? => (otherlv_150= ',' otherlv_151= 'Database' otherlv_152= '=' ( (lv_dbname_153_0= RULE_STRING ) ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2361:5: {...}? => ( ({...}? => (otherlv_150= ',' otherlv_151= 'Database' otherlv_152= '=' ( (lv_dbname_153_0= RULE_STRING ) ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_5_1(), 1) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_5_1(), 1)");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2361:111: ( ({...}? => (otherlv_150= ',' otherlv_151= 'Database' otherlv_152= '=' ( (lv_dbname_153_0= RULE_STRING ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2362:6: ({...}? => (otherlv_150= ',' otherlv_151= 'Database' otherlv_152= '=' ( (lv_dbname_153_0= RULE_STRING ) ) ) )
                    	    {
                    	     
                    	    	 				  getUnorderedGroupHelper().select(grammarAccess.getConnectionAccess().getUnorderedGroup_2_5_1(), 1);
                    	    	 				
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2365:6: ({...}? => (otherlv_150= ',' otherlv_151= 'Database' otherlv_152= '=' ( (lv_dbname_153_0= RULE_STRING ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2365:7: {...}? => (otherlv_150= ',' otherlv_151= 'Database' otherlv_152= '=' ( (lv_dbname_153_0= RULE_STRING ) ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "true");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2365:16: (otherlv_150= ',' otherlv_151= 'Database' otherlv_152= '=' ( (lv_dbname_153_0= RULE_STRING ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2365:18: otherlv_150= ',' otherlv_151= 'Database' otherlv_152= '=' ( (lv_dbname_153_0= RULE_STRING ) )
                    	    {
                    	    otherlv_150=(Token)match(input,28,FOLLOW_28_in_ruleConnection5913); 

                    	        	newLeafNode(otherlv_150, grammarAccess.getConnectionAccess().getCommaKeyword_2_5_1_1_0());
                    	        
                    	    otherlv_151=(Token)match(input,29,FOLLOW_29_in_ruleConnection5925); 

                    	        	newLeafNode(otherlv_151, grammarAccess.getConnectionAccess().getDatabaseKeyword_2_5_1_1_1());
                    	        
                    	    otherlv_152=(Token)match(input,27,FOLLOW_27_in_ruleConnection5937); 

                    	        	newLeafNode(otherlv_152, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_5_1_1_2());
                    	        
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2377:1: ( (lv_dbname_153_0= RULE_STRING ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2378:1: (lv_dbname_153_0= RULE_STRING )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2378:1: (lv_dbname_153_0= RULE_STRING )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2379:3: lv_dbname_153_0= RULE_STRING
                    	    {
                    	    lv_dbname_153_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConnection5954); 

                    	    			newLeafNode(lv_dbname_153_0, grammarAccess.getConnectionAccess().getDbnameSTRINGTerminalRuleCall_2_5_1_1_3_0()); 
                    	    		

                    	    	        if (current==null) {
                    	    	            current = createModelElement(grammarAccess.getConnectionRule());
                    	    	        }
                    	           		setWithLastConsumed(
                    	           			current, 
                    	           			"dbname",
                    	            		lv_dbname_153_0, 
                    	            		"STRING");
                    	    	    

                    	    }


                    	    }


                    	    }


                    	    }

                    	     
                    	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConnectionAccess().getUnorderedGroup_2_5_1());
                    	    	 				

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 3 :
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2402:4: ({...}? => ( ({...}? => (otherlv_154= ',' otherlv_155= 'User' otherlv_156= '=' ( (lv_user_157_0= RULE_STRING ) ) ) ) ) )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2402:4: ({...}? => ( ({...}? => (otherlv_154= ',' otherlv_155= 'User' otherlv_156= '=' ( (lv_user_157_0= RULE_STRING ) ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2403:5: {...}? => ( ({...}? => (otherlv_154= ',' otherlv_155= 'User' otherlv_156= '=' ( (lv_user_157_0= RULE_STRING ) ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_5_1(), 2) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_5_1(), 2)");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2403:111: ( ({...}? => (otherlv_154= ',' otherlv_155= 'User' otherlv_156= '=' ( (lv_user_157_0= RULE_STRING ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2404:6: ({...}? => (otherlv_154= ',' otherlv_155= 'User' otherlv_156= '=' ( (lv_user_157_0= RULE_STRING ) ) ) )
                    	    {
                    	     
                    	    	 				  getUnorderedGroupHelper().select(grammarAccess.getConnectionAccess().getUnorderedGroup_2_5_1(), 2);
                    	    	 				
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2407:6: ({...}? => (otherlv_154= ',' otherlv_155= 'User' otherlv_156= '=' ( (lv_user_157_0= RULE_STRING ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2407:7: {...}? => (otherlv_154= ',' otherlv_155= 'User' otherlv_156= '=' ( (lv_user_157_0= RULE_STRING ) ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "true");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2407:16: (otherlv_154= ',' otherlv_155= 'User' otherlv_156= '=' ( (lv_user_157_0= RULE_STRING ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2407:18: otherlv_154= ',' otherlv_155= 'User' otherlv_156= '=' ( (lv_user_157_0= RULE_STRING ) )
                    	    {
                    	    otherlv_154=(Token)match(input,28,FOLLOW_28_in_ruleConnection6027); 

                    	        	newLeafNode(otherlv_154, grammarAccess.getConnectionAccess().getCommaKeyword_2_5_1_2_0());
                    	        
                    	    otherlv_155=(Token)match(input,30,FOLLOW_30_in_ruleConnection6039); 

                    	        	newLeafNode(otherlv_155, grammarAccess.getConnectionAccess().getUserKeyword_2_5_1_2_1());
                    	        
                    	    otherlv_156=(Token)match(input,27,FOLLOW_27_in_ruleConnection6051); 

                    	        	newLeafNode(otherlv_156, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_5_1_2_2());
                    	        
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2419:1: ( (lv_user_157_0= RULE_STRING ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2420:1: (lv_user_157_0= RULE_STRING )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2420:1: (lv_user_157_0= RULE_STRING )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2421:3: lv_user_157_0= RULE_STRING
                    	    {
                    	    lv_user_157_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConnection6068); 

                    	    			newLeafNode(lv_user_157_0, grammarAccess.getConnectionAccess().getUserSTRINGTerminalRuleCall_2_5_1_2_3_0()); 
                    	    		

                    	    	        if (current==null) {
                    	    	            current = createModelElement(grammarAccess.getConnectionRule());
                    	    	        }
                    	           		setWithLastConsumed(
                    	           			current, 
                    	           			"user",
                    	            		lv_user_157_0, 
                    	            		"STRING");
                    	    	    

                    	    }


                    	    }


                    	    }


                    	    }

                    	     
                    	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConnectionAccess().getUnorderedGroup_2_5_1());
                    	    	 				

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 4 :
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2444:4: ({...}? => ( ({...}? => (otherlv_158= ',' otherlv_159= 'Password' otherlv_160= '=' ( (lv_password_161_0= RULE_STRING ) ) ) ) ) )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2444:4: ({...}? => ( ({...}? => (otherlv_158= ',' otherlv_159= 'Password' otherlv_160= '=' ( (lv_password_161_0= RULE_STRING ) ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2445:5: {...}? => ( ({...}? => (otherlv_158= ',' otherlv_159= 'Password' otherlv_160= '=' ( (lv_password_161_0= RULE_STRING ) ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_5_1(), 3) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_5_1(), 3)");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2445:111: ( ({...}? => (otherlv_158= ',' otherlv_159= 'Password' otherlv_160= '=' ( (lv_password_161_0= RULE_STRING ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2446:6: ({...}? => (otherlv_158= ',' otherlv_159= 'Password' otherlv_160= '=' ( (lv_password_161_0= RULE_STRING ) ) ) )
                    	    {
                    	     
                    	    	 				  getUnorderedGroupHelper().select(grammarAccess.getConnectionAccess().getUnorderedGroup_2_5_1(), 3);
                    	    	 				
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2449:6: ({...}? => (otherlv_158= ',' otherlv_159= 'Password' otherlv_160= '=' ( (lv_password_161_0= RULE_STRING ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2449:7: {...}? => (otherlv_158= ',' otherlv_159= 'Password' otherlv_160= '=' ( (lv_password_161_0= RULE_STRING ) ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "true");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2449:16: (otherlv_158= ',' otherlv_159= 'Password' otherlv_160= '=' ( (lv_password_161_0= RULE_STRING ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2449:18: otherlv_158= ',' otherlv_159= 'Password' otherlv_160= '=' ( (lv_password_161_0= RULE_STRING ) )
                    	    {
                    	    otherlv_158=(Token)match(input,28,FOLLOW_28_in_ruleConnection6141); 

                    	        	newLeafNode(otherlv_158, grammarAccess.getConnectionAccess().getCommaKeyword_2_5_1_3_0());
                    	        
                    	    otherlv_159=(Token)match(input,31,FOLLOW_31_in_ruleConnection6153); 

                    	        	newLeafNode(otherlv_159, grammarAccess.getConnectionAccess().getPasswordKeyword_2_5_1_3_1());
                    	        
                    	    otherlv_160=(Token)match(input,27,FOLLOW_27_in_ruleConnection6165); 

                    	        	newLeafNode(otherlv_160, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_5_1_3_2());
                    	        
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2461:1: ( (lv_password_161_0= RULE_STRING ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2462:1: (lv_password_161_0= RULE_STRING )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2462:1: (lv_password_161_0= RULE_STRING )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2463:3: lv_password_161_0= RULE_STRING
                    	    {
                    	    lv_password_161_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConnection6182); 

                    	    			newLeafNode(lv_password_161_0, grammarAccess.getConnectionAccess().getPasswordSTRINGTerminalRuleCall_2_5_1_3_3_0()); 
                    	    		

                    	    	        if (current==null) {
                    	    	            current = createModelElement(grammarAccess.getConnectionRule());
                    	    	        }
                    	           		setWithLastConsumed(
                    	           			current, 
                    	           			"password",
                    	            		lv_password_161_0, 
                    	            		"STRING");
                    	    	    

                    	    }


                    	    }


                    	    }


                    	    }

                    	     
                    	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConnectionAccess().getUnorderedGroup_2_5_1());
                    	    	 				

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 5 :
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2486:4: ({...}? => ( ({...}? => (otherlv_162= ',' otherlv_163= 'URL' otherlv_164= '=' ( (lv_url_165_0= RULE_STRING ) ) ) ) ) )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2486:4: ({...}? => ( ({...}? => (otherlv_162= ',' otherlv_163= 'URL' otherlv_164= '=' ( (lv_url_165_0= RULE_STRING ) ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2487:5: {...}? => ( ({...}? => (otherlv_162= ',' otherlv_163= 'URL' otherlv_164= '=' ( (lv_url_165_0= RULE_STRING ) ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_5_1(), 4) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_5_1(), 4)");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2487:111: ( ({...}? => (otherlv_162= ',' otherlv_163= 'URL' otherlv_164= '=' ( (lv_url_165_0= RULE_STRING ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2488:6: ({...}? => (otherlv_162= ',' otherlv_163= 'URL' otherlv_164= '=' ( (lv_url_165_0= RULE_STRING ) ) ) )
                    	    {
                    	     
                    	    	 				  getUnorderedGroupHelper().select(grammarAccess.getConnectionAccess().getUnorderedGroup_2_5_1(), 4);
                    	    	 				
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2491:6: ({...}? => (otherlv_162= ',' otherlv_163= 'URL' otherlv_164= '=' ( (lv_url_165_0= RULE_STRING ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2491:7: {...}? => (otherlv_162= ',' otherlv_163= 'URL' otherlv_164= '=' ( (lv_url_165_0= RULE_STRING ) ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "true");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2491:16: (otherlv_162= ',' otherlv_163= 'URL' otherlv_164= '=' ( (lv_url_165_0= RULE_STRING ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2491:18: otherlv_162= ',' otherlv_163= 'URL' otherlv_164= '=' ( (lv_url_165_0= RULE_STRING ) )
                    	    {
                    	    otherlv_162=(Token)match(input,28,FOLLOW_28_in_ruleConnection6255); 

                    	        	newLeafNode(otherlv_162, grammarAccess.getConnectionAccess().getCommaKeyword_2_5_1_4_0());
                    	        
                    	    otherlv_163=(Token)match(input,32,FOLLOW_32_in_ruleConnection6267); 

                    	        	newLeafNode(otherlv_163, grammarAccess.getConnectionAccess().getURLKeyword_2_5_1_4_1());
                    	        
                    	    otherlv_164=(Token)match(input,27,FOLLOW_27_in_ruleConnection6279); 

                    	        	newLeafNode(otherlv_164, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_5_1_4_2());
                    	        
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2503:1: ( (lv_url_165_0= RULE_STRING ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2504:1: (lv_url_165_0= RULE_STRING )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2504:1: (lv_url_165_0= RULE_STRING )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2505:3: lv_url_165_0= RULE_STRING
                    	    {
                    	    lv_url_165_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConnection6296); 

                    	    			newLeafNode(lv_url_165_0, grammarAccess.getConnectionAccess().getUrlSTRINGTerminalRuleCall_2_5_1_4_3_0()); 
                    	    		

                    	    	        if (current==null) {
                    	    	            current = createModelElement(grammarAccess.getConnectionRule());
                    	    	        }
                    	           		setWithLastConsumed(
                    	           			current, 
                    	           			"url",
                    	            		lv_url_165_0, 
                    	            		"STRING");
                    	    	    

                    	    }


                    	    }


                    	    }


                    	    }

                    	     
                    	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConnectionAccess().getUnorderedGroup_2_5_1());
                    	    	 				

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 6 :
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2528:4: ({...}? => ( ({...}? => (otherlv_166= ',' otherlv_167= 'Pool-Size' otherlv_168= '=' ( (lv_poolsize_169_0= RULE_STRING ) ) ) ) ) )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2528:4: ({...}? => ( ({...}? => (otherlv_166= ',' otherlv_167= 'Pool-Size' otherlv_168= '=' ( (lv_poolsize_169_0= RULE_STRING ) ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2529:5: {...}? => ( ({...}? => (otherlv_166= ',' otherlv_167= 'Pool-Size' otherlv_168= '=' ( (lv_poolsize_169_0= RULE_STRING ) ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_5_1(), 5) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_5_1(), 5)");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2529:111: ( ({...}? => (otherlv_166= ',' otherlv_167= 'Pool-Size' otherlv_168= '=' ( (lv_poolsize_169_0= RULE_STRING ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2530:6: ({...}? => (otherlv_166= ',' otherlv_167= 'Pool-Size' otherlv_168= '=' ( (lv_poolsize_169_0= RULE_STRING ) ) ) )
                    	    {
                    	     
                    	    	 				  getUnorderedGroupHelper().select(grammarAccess.getConnectionAccess().getUnorderedGroup_2_5_1(), 5);
                    	    	 				
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2533:6: ({...}? => (otherlv_166= ',' otherlv_167= 'Pool-Size' otherlv_168= '=' ( (lv_poolsize_169_0= RULE_STRING ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2533:7: {...}? => (otherlv_166= ',' otherlv_167= 'Pool-Size' otherlv_168= '=' ( (lv_poolsize_169_0= RULE_STRING ) ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "true");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2533:16: (otherlv_166= ',' otherlv_167= 'Pool-Size' otherlv_168= '=' ( (lv_poolsize_169_0= RULE_STRING ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2533:18: otherlv_166= ',' otherlv_167= 'Pool-Size' otherlv_168= '=' ( (lv_poolsize_169_0= RULE_STRING ) )
                    	    {
                    	    otherlv_166=(Token)match(input,28,FOLLOW_28_in_ruleConnection6369); 

                    	        	newLeafNode(otherlv_166, grammarAccess.getConnectionAccess().getCommaKeyword_2_5_1_5_0());
                    	        
                    	    otherlv_167=(Token)match(input,34,FOLLOW_34_in_ruleConnection6381); 

                    	        	newLeafNode(otherlv_167, grammarAccess.getConnectionAccess().getPoolSizeKeyword_2_5_1_5_1());
                    	        
                    	    otherlv_168=(Token)match(input,27,FOLLOW_27_in_ruleConnection6393); 

                    	        	newLeafNode(otherlv_168, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_5_1_5_2());
                    	        
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2545:1: ( (lv_poolsize_169_0= RULE_STRING ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2546:1: (lv_poolsize_169_0= RULE_STRING )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2546:1: (lv_poolsize_169_0= RULE_STRING )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2547:3: lv_poolsize_169_0= RULE_STRING
                    	    {
                    	    lv_poolsize_169_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConnection6410); 

                    	    			newLeafNode(lv_poolsize_169_0, grammarAccess.getConnectionAccess().getPoolsizeSTRINGTerminalRuleCall_2_5_1_5_3_0()); 
                    	    		

                    	    	        if (current==null) {
                    	    	            current = createModelElement(grammarAccess.getConnectionRule());
                    	    	        }
                    	           		setWithLastConsumed(
                    	           			current, 
                    	           			"poolsize",
                    	            		lv_poolsize_169_0, 
                    	            		"STRING");
                    	    	    

                    	    }


                    	    }


                    	    }


                    	    }

                    	     
                    	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConnectionAccess().getUnorderedGroup_2_5_1());
                    	    	 				

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt19 >= 1 ) break loop19;
                                EarlyExitException eee =
                                    new EarlyExitException(19, input);
                                throw eee;
                        }
                        cnt19++;
                    } while (true);

                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getConnectionAccess().getUnorderedGroup_2_5_1()) ) {
                        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canLeave(grammarAccess.getConnectionAccess().getUnorderedGroup_2_5_1())");
                    }

                    }


                    }

                     
                    	  getUnorderedGroupHelper().leave(grammarAccess.getConnectionAccess().getUnorderedGroup_2_5_1());
                    	

                    }


                    }


                    }
                    break;
                case 7 :
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2579:6: ( (otherlv_170= 'Pool-Size' otherlv_171= '=' ( (lv_poolsize_172_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_174= ',' otherlv_175= 'Type' otherlv_176= '=' ( (lv_type_177_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_178= ',' otherlv_179= 'Database' otherlv_180= '=' ( (lv_dbname_181_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_182= ',' otherlv_183= 'User' otherlv_184= '=' ( (lv_user_185_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_186= ',' otherlv_187= 'Password' otherlv_188= '=' ( (lv_password_189_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_190= ',' otherlv_191= 'URL' otherlv_192= '=' ( (lv_url_193_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_194= ',' otherlv_195= 'Port' otherlv_196= '=' ( (lv_port_197_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) )
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2579:6: ( (otherlv_170= 'Pool-Size' otherlv_171= '=' ( (lv_poolsize_172_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_174= ',' otherlv_175= 'Type' otherlv_176= '=' ( (lv_type_177_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_178= ',' otherlv_179= 'Database' otherlv_180= '=' ( (lv_dbname_181_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_182= ',' otherlv_183= 'User' otherlv_184= '=' ( (lv_user_185_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_186= ',' otherlv_187= 'Password' otherlv_188= '=' ( (lv_password_189_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_190= ',' otherlv_191= 'URL' otherlv_192= '=' ( (lv_url_193_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_194= ',' otherlv_195= 'Port' otherlv_196= '=' ( (lv_port_197_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) ) )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2579:7: (otherlv_170= 'Pool-Size' otherlv_171= '=' ( (lv_poolsize_172_0= RULE_STRING ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_174= ',' otherlv_175= 'Type' otherlv_176= '=' ( (lv_type_177_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_178= ',' otherlv_179= 'Database' otherlv_180= '=' ( (lv_dbname_181_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_182= ',' otherlv_183= 'User' otherlv_184= '=' ( (lv_user_185_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_186= ',' otherlv_187= 'Password' otherlv_188= '=' ( (lv_password_189_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_190= ',' otherlv_191= 'URL' otherlv_192= '=' ( (lv_url_193_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_194= ',' otherlv_195= 'Port' otherlv_196= '=' ( (lv_port_197_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) )
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2579:7: (otherlv_170= 'Pool-Size' otherlv_171= '=' ( (lv_poolsize_172_0= RULE_STRING ) ) )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2579:9: otherlv_170= 'Pool-Size' otherlv_171= '=' ( (lv_poolsize_172_0= RULE_STRING ) )
                    {
                    otherlv_170=(Token)match(input,34,FOLLOW_34_in_ruleConnection6483); 

                        	newLeafNode(otherlv_170, grammarAccess.getConnectionAccess().getPoolSizeKeyword_2_6_0_0());
                        
                    otherlv_171=(Token)match(input,27,FOLLOW_27_in_ruleConnection6495); 

                        	newLeafNode(otherlv_171, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_6_0_1());
                        
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2587:1: ( (lv_poolsize_172_0= RULE_STRING ) )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2588:1: (lv_poolsize_172_0= RULE_STRING )
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2588:1: (lv_poolsize_172_0= RULE_STRING )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2589:3: lv_poolsize_172_0= RULE_STRING
                    {
                    lv_poolsize_172_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConnection6512); 

                    			newLeafNode(lv_poolsize_172_0, grammarAccess.getConnectionAccess().getPoolsizeSTRINGTerminalRuleCall_2_6_0_2_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getConnectionRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"poolsize",
                            		lv_poolsize_172_0, 
                            		"STRING");
                    	    

                    }


                    }


                    }

                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2605:3: ( ( ( ( ({...}? => ( ({...}? => (otherlv_174= ',' otherlv_175= 'Type' otherlv_176= '=' ( (lv_type_177_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_178= ',' otherlv_179= 'Database' otherlv_180= '=' ( (lv_dbname_181_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_182= ',' otherlv_183= 'User' otherlv_184= '=' ( (lv_user_185_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_186= ',' otherlv_187= 'Password' otherlv_188= '=' ( (lv_password_189_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_190= ',' otherlv_191= 'URL' otherlv_192= '=' ( (lv_url_193_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_194= ',' otherlv_195= 'Port' otherlv_196= '=' ( (lv_port_197_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) ) )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2607:1: ( ( ( ({...}? => ( ({...}? => (otherlv_174= ',' otherlv_175= 'Type' otherlv_176= '=' ( (lv_type_177_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_178= ',' otherlv_179= 'Database' otherlv_180= '=' ( (lv_dbname_181_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_182= ',' otherlv_183= 'User' otherlv_184= '=' ( (lv_user_185_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_186= ',' otherlv_187= 'Password' otherlv_188= '=' ( (lv_password_189_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_190= ',' otherlv_191= 'URL' otherlv_192= '=' ( (lv_url_193_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_194= ',' otherlv_195= 'Port' otherlv_196= '=' ( (lv_port_197_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) )
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2607:1: ( ( ( ({...}? => ( ({...}? => (otherlv_174= ',' otherlv_175= 'Type' otherlv_176= '=' ( (lv_type_177_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_178= ',' otherlv_179= 'Database' otherlv_180= '=' ( (lv_dbname_181_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_182= ',' otherlv_183= 'User' otherlv_184= '=' ( (lv_user_185_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_186= ',' otherlv_187= 'Password' otherlv_188= '=' ( (lv_password_189_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_190= ',' otherlv_191= 'URL' otherlv_192= '=' ( (lv_url_193_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_194= ',' otherlv_195= 'Port' otherlv_196= '=' ( (lv_port_197_0= RULE_STRING ) ) ) ) ) ) )+ {...}?) )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2608:2: ( ( ({...}? => ( ({...}? => (otherlv_174= ',' otherlv_175= 'Type' otherlv_176= '=' ( (lv_type_177_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_178= ',' otherlv_179= 'Database' otherlv_180= '=' ( (lv_dbname_181_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_182= ',' otherlv_183= 'User' otherlv_184= '=' ( (lv_user_185_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_186= ',' otherlv_187= 'Password' otherlv_188= '=' ( (lv_password_189_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_190= ',' otherlv_191= 'URL' otherlv_192= '=' ( (lv_url_193_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_194= ',' otherlv_195= 'Port' otherlv_196= '=' ( (lv_port_197_0= RULE_STRING ) ) ) ) ) ) )+ {...}?)
                    {
                     
                    	  getUnorderedGroupHelper().enter(grammarAccess.getConnectionAccess().getUnorderedGroup_2_6_1());
                    	
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2611:2: ( ( ({...}? => ( ({...}? => (otherlv_174= ',' otherlv_175= 'Type' otherlv_176= '=' ( (lv_type_177_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_178= ',' otherlv_179= 'Database' otherlv_180= '=' ( (lv_dbname_181_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_182= ',' otherlv_183= 'User' otherlv_184= '=' ( (lv_user_185_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_186= ',' otherlv_187= 'Password' otherlv_188= '=' ( (lv_password_189_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_190= ',' otherlv_191= 'URL' otherlv_192= '=' ( (lv_url_193_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_194= ',' otherlv_195= 'Port' otherlv_196= '=' ( (lv_port_197_0= RULE_STRING ) ) ) ) ) ) )+ {...}?)
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2612:3: ( ({...}? => ( ({...}? => (otherlv_174= ',' otherlv_175= 'Type' otherlv_176= '=' ( (lv_type_177_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_178= ',' otherlv_179= 'Database' otherlv_180= '=' ( (lv_dbname_181_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_182= ',' otherlv_183= 'User' otherlv_184= '=' ( (lv_user_185_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_186= ',' otherlv_187= 'Password' otherlv_188= '=' ( (lv_password_189_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_190= ',' otherlv_191= 'URL' otherlv_192= '=' ( (lv_url_193_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_194= ',' otherlv_195= 'Port' otherlv_196= '=' ( (lv_port_197_0= RULE_STRING ) ) ) ) ) ) )+ {...}?
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2612:3: ( ({...}? => ( ({...}? => (otherlv_174= ',' otherlv_175= 'Type' otherlv_176= '=' ( (lv_type_177_0= ruleDataBase ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_178= ',' otherlv_179= 'Database' otherlv_180= '=' ( (lv_dbname_181_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_182= ',' otherlv_183= 'User' otherlv_184= '=' ( (lv_user_185_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_186= ',' otherlv_187= 'Password' otherlv_188= '=' ( (lv_password_189_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_190= ',' otherlv_191= 'URL' otherlv_192= '=' ( (lv_url_193_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_194= ',' otherlv_195= 'Port' otherlv_196= '=' ( (lv_port_197_0= RULE_STRING ) ) ) ) ) ) )+
                    int cnt20=0;
                    loop20:
                    do {
                        int alt20=7;
                        int LA20_0 = input.LA(1);

                        if ( LA20_0 ==28 && ( getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_6_1(), 4) || getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_6_1(), 5) || getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_6_1(), 3) || getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_6_1(), 0) || getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_6_1(), 1) || getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_6_1(), 2) ) ) {
                            int LA20_2 = input.LA(2);

                            if ( LA20_2 ==31 && getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_6_1(), 3) ) {
                                alt20=4;
                            }
                            else if ( LA20_2 ==33 && getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_6_1(), 5) ) {
                                alt20=6;
                            }
                            else if ( LA20_2 ==32 && getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_6_1(), 4) ) {
                                alt20=5;
                            }
                            else if ( LA20_2 ==29 && getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_6_1(), 1) ) {
                                alt20=2;
                            }
                            else if ( LA20_2 ==26 && getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_6_1(), 0) ) {
                                alt20=1;
                            }
                            else if ( LA20_2 ==30 && getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_6_1(), 2) ) {
                                alt20=3;
                            }


                        }


                        switch (alt20) {
                    	case 1 :
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2614:4: ({...}? => ( ({...}? => (otherlv_174= ',' otherlv_175= 'Type' otherlv_176= '=' ( (lv_type_177_0= ruleDataBase ) ) ) ) ) )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2614:4: ({...}? => ( ({...}? => (otherlv_174= ',' otherlv_175= 'Type' otherlv_176= '=' ( (lv_type_177_0= ruleDataBase ) ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2615:5: {...}? => ( ({...}? => (otherlv_174= ',' otherlv_175= 'Type' otherlv_176= '=' ( (lv_type_177_0= ruleDataBase ) ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_6_1(), 0) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_6_1(), 0)");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2615:111: ( ({...}? => (otherlv_174= ',' otherlv_175= 'Type' otherlv_176= '=' ( (lv_type_177_0= ruleDataBase ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2616:6: ({...}? => (otherlv_174= ',' otherlv_175= 'Type' otherlv_176= '=' ( (lv_type_177_0= ruleDataBase ) ) ) )
                    	    {
                    	     
                    	    	 				  getUnorderedGroupHelper().select(grammarAccess.getConnectionAccess().getUnorderedGroup_2_6_1(), 0);
                    	    	 				
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2619:6: ({...}? => (otherlv_174= ',' otherlv_175= 'Type' otherlv_176= '=' ( (lv_type_177_0= ruleDataBase ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2619:7: {...}? => (otherlv_174= ',' otherlv_175= 'Type' otherlv_176= '=' ( (lv_type_177_0= ruleDataBase ) ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "true");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2619:16: (otherlv_174= ',' otherlv_175= 'Type' otherlv_176= '=' ( (lv_type_177_0= ruleDataBase ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2619:18: otherlv_174= ',' otherlv_175= 'Type' otherlv_176= '=' ( (lv_type_177_0= ruleDataBase ) )
                    	    {
                    	    otherlv_174=(Token)match(input,28,FOLLOW_28_in_ruleConnection6576); 

                    	        	newLeafNode(otherlv_174, grammarAccess.getConnectionAccess().getCommaKeyword_2_6_1_0_0());
                    	        
                    	    otherlv_175=(Token)match(input,26,FOLLOW_26_in_ruleConnection6588); 

                    	        	newLeafNode(otherlv_175, grammarAccess.getConnectionAccess().getTypeKeyword_2_6_1_0_1());
                    	        
                    	    otherlv_176=(Token)match(input,27,FOLLOW_27_in_ruleConnection6600); 

                    	        	newLeafNode(otherlv_176, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_6_1_0_2());
                    	        
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2631:1: ( (lv_type_177_0= ruleDataBase ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2632:1: (lv_type_177_0= ruleDataBase )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2632:1: (lv_type_177_0= ruleDataBase )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2633:3: lv_type_177_0= ruleDataBase
                    	    {
                    	     
                    	    	        newCompositeNode(grammarAccess.getConnectionAccess().getTypeDataBaseParserRuleCall_2_6_1_0_3_0()); 
                    	    	    
                    	    pushFollow(FOLLOW_ruleDataBase_in_ruleConnection6621);
                    	    lv_type_177_0=ruleDataBase();

                    	    state._fsp--;


                    	    	        if (current==null) {
                    	    	            current = createModelElementForParent(grammarAccess.getConnectionRule());
                    	    	        }
                    	           		set(
                    	           			current, 
                    	           			"type",
                    	            		lv_type_177_0, 
                    	            		"DataBase");
                    	    	        afterParserOrEnumRuleCall();
                    	    	    

                    	    }


                    	    }


                    	    }


                    	    }

                    	     
                    	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConnectionAccess().getUnorderedGroup_2_6_1());
                    	    	 				

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 2 :
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2656:4: ({...}? => ( ({...}? => (otherlv_178= ',' otherlv_179= 'Database' otherlv_180= '=' ( (lv_dbname_181_0= RULE_STRING ) ) ) ) ) )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2656:4: ({...}? => ( ({...}? => (otherlv_178= ',' otherlv_179= 'Database' otherlv_180= '=' ( (lv_dbname_181_0= RULE_STRING ) ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2657:5: {...}? => ( ({...}? => (otherlv_178= ',' otherlv_179= 'Database' otherlv_180= '=' ( (lv_dbname_181_0= RULE_STRING ) ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_6_1(), 1) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_6_1(), 1)");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2657:111: ( ({...}? => (otherlv_178= ',' otherlv_179= 'Database' otherlv_180= '=' ( (lv_dbname_181_0= RULE_STRING ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2658:6: ({...}? => (otherlv_178= ',' otherlv_179= 'Database' otherlv_180= '=' ( (lv_dbname_181_0= RULE_STRING ) ) ) )
                    	    {
                    	     
                    	    	 				  getUnorderedGroupHelper().select(grammarAccess.getConnectionAccess().getUnorderedGroup_2_6_1(), 1);
                    	    	 				
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2661:6: ({...}? => (otherlv_178= ',' otherlv_179= 'Database' otherlv_180= '=' ( (lv_dbname_181_0= RULE_STRING ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2661:7: {...}? => (otherlv_178= ',' otherlv_179= 'Database' otherlv_180= '=' ( (lv_dbname_181_0= RULE_STRING ) ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "true");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2661:16: (otherlv_178= ',' otherlv_179= 'Database' otherlv_180= '=' ( (lv_dbname_181_0= RULE_STRING ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2661:18: otherlv_178= ',' otherlv_179= 'Database' otherlv_180= '=' ( (lv_dbname_181_0= RULE_STRING ) )
                    	    {
                    	    otherlv_178=(Token)match(input,28,FOLLOW_28_in_ruleConnection6689); 

                    	        	newLeafNode(otherlv_178, grammarAccess.getConnectionAccess().getCommaKeyword_2_6_1_1_0());
                    	        
                    	    otherlv_179=(Token)match(input,29,FOLLOW_29_in_ruleConnection6701); 

                    	        	newLeafNode(otherlv_179, grammarAccess.getConnectionAccess().getDatabaseKeyword_2_6_1_1_1());
                    	        
                    	    otherlv_180=(Token)match(input,27,FOLLOW_27_in_ruleConnection6713); 

                    	        	newLeafNode(otherlv_180, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_6_1_1_2());
                    	        
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2673:1: ( (lv_dbname_181_0= RULE_STRING ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2674:1: (lv_dbname_181_0= RULE_STRING )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2674:1: (lv_dbname_181_0= RULE_STRING )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2675:3: lv_dbname_181_0= RULE_STRING
                    	    {
                    	    lv_dbname_181_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConnection6730); 

                    	    			newLeafNode(lv_dbname_181_0, grammarAccess.getConnectionAccess().getDbnameSTRINGTerminalRuleCall_2_6_1_1_3_0()); 
                    	    		

                    	    	        if (current==null) {
                    	    	            current = createModelElement(grammarAccess.getConnectionRule());
                    	    	        }
                    	           		setWithLastConsumed(
                    	           			current, 
                    	           			"dbname",
                    	            		lv_dbname_181_0, 
                    	            		"STRING");
                    	    	    

                    	    }


                    	    }


                    	    }


                    	    }

                    	     
                    	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConnectionAccess().getUnorderedGroup_2_6_1());
                    	    	 				

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 3 :
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2698:4: ({...}? => ( ({...}? => (otherlv_182= ',' otherlv_183= 'User' otherlv_184= '=' ( (lv_user_185_0= RULE_STRING ) ) ) ) ) )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2698:4: ({...}? => ( ({...}? => (otherlv_182= ',' otherlv_183= 'User' otherlv_184= '=' ( (lv_user_185_0= RULE_STRING ) ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2699:5: {...}? => ( ({...}? => (otherlv_182= ',' otherlv_183= 'User' otherlv_184= '=' ( (lv_user_185_0= RULE_STRING ) ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_6_1(), 2) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_6_1(), 2)");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2699:111: ( ({...}? => (otherlv_182= ',' otherlv_183= 'User' otherlv_184= '=' ( (lv_user_185_0= RULE_STRING ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2700:6: ({...}? => (otherlv_182= ',' otherlv_183= 'User' otherlv_184= '=' ( (lv_user_185_0= RULE_STRING ) ) ) )
                    	    {
                    	     
                    	    	 				  getUnorderedGroupHelper().select(grammarAccess.getConnectionAccess().getUnorderedGroup_2_6_1(), 2);
                    	    	 				
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2703:6: ({...}? => (otherlv_182= ',' otherlv_183= 'User' otherlv_184= '=' ( (lv_user_185_0= RULE_STRING ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2703:7: {...}? => (otherlv_182= ',' otherlv_183= 'User' otherlv_184= '=' ( (lv_user_185_0= RULE_STRING ) ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "true");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2703:16: (otherlv_182= ',' otherlv_183= 'User' otherlv_184= '=' ( (lv_user_185_0= RULE_STRING ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2703:18: otherlv_182= ',' otherlv_183= 'User' otherlv_184= '=' ( (lv_user_185_0= RULE_STRING ) )
                    	    {
                    	    otherlv_182=(Token)match(input,28,FOLLOW_28_in_ruleConnection6803); 

                    	        	newLeafNode(otherlv_182, grammarAccess.getConnectionAccess().getCommaKeyword_2_6_1_2_0());
                    	        
                    	    otherlv_183=(Token)match(input,30,FOLLOW_30_in_ruleConnection6815); 

                    	        	newLeafNode(otherlv_183, grammarAccess.getConnectionAccess().getUserKeyword_2_6_1_2_1());
                    	        
                    	    otherlv_184=(Token)match(input,27,FOLLOW_27_in_ruleConnection6827); 

                    	        	newLeafNode(otherlv_184, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_6_1_2_2());
                    	        
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2715:1: ( (lv_user_185_0= RULE_STRING ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2716:1: (lv_user_185_0= RULE_STRING )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2716:1: (lv_user_185_0= RULE_STRING )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2717:3: lv_user_185_0= RULE_STRING
                    	    {
                    	    lv_user_185_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConnection6844); 

                    	    			newLeafNode(lv_user_185_0, grammarAccess.getConnectionAccess().getUserSTRINGTerminalRuleCall_2_6_1_2_3_0()); 
                    	    		

                    	    	        if (current==null) {
                    	    	            current = createModelElement(grammarAccess.getConnectionRule());
                    	    	        }
                    	           		setWithLastConsumed(
                    	           			current, 
                    	           			"user",
                    	            		lv_user_185_0, 
                    	            		"STRING");
                    	    	    

                    	    }


                    	    }


                    	    }


                    	    }

                    	     
                    	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConnectionAccess().getUnorderedGroup_2_6_1());
                    	    	 				

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 4 :
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2740:4: ({...}? => ( ({...}? => (otherlv_186= ',' otherlv_187= 'Password' otherlv_188= '=' ( (lv_password_189_0= RULE_STRING ) ) ) ) ) )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2740:4: ({...}? => ( ({...}? => (otherlv_186= ',' otherlv_187= 'Password' otherlv_188= '=' ( (lv_password_189_0= RULE_STRING ) ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2741:5: {...}? => ( ({...}? => (otherlv_186= ',' otherlv_187= 'Password' otherlv_188= '=' ( (lv_password_189_0= RULE_STRING ) ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_6_1(), 3) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_6_1(), 3)");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2741:111: ( ({...}? => (otherlv_186= ',' otherlv_187= 'Password' otherlv_188= '=' ( (lv_password_189_0= RULE_STRING ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2742:6: ({...}? => (otherlv_186= ',' otherlv_187= 'Password' otherlv_188= '=' ( (lv_password_189_0= RULE_STRING ) ) ) )
                    	    {
                    	     
                    	    	 				  getUnorderedGroupHelper().select(grammarAccess.getConnectionAccess().getUnorderedGroup_2_6_1(), 3);
                    	    	 				
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2745:6: ({...}? => (otherlv_186= ',' otherlv_187= 'Password' otherlv_188= '=' ( (lv_password_189_0= RULE_STRING ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2745:7: {...}? => (otherlv_186= ',' otherlv_187= 'Password' otherlv_188= '=' ( (lv_password_189_0= RULE_STRING ) ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "true");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2745:16: (otherlv_186= ',' otherlv_187= 'Password' otherlv_188= '=' ( (lv_password_189_0= RULE_STRING ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2745:18: otherlv_186= ',' otherlv_187= 'Password' otherlv_188= '=' ( (lv_password_189_0= RULE_STRING ) )
                    	    {
                    	    otherlv_186=(Token)match(input,28,FOLLOW_28_in_ruleConnection6917); 

                    	        	newLeafNode(otherlv_186, grammarAccess.getConnectionAccess().getCommaKeyword_2_6_1_3_0());
                    	        
                    	    otherlv_187=(Token)match(input,31,FOLLOW_31_in_ruleConnection6929); 

                    	        	newLeafNode(otherlv_187, grammarAccess.getConnectionAccess().getPasswordKeyword_2_6_1_3_1());
                    	        
                    	    otherlv_188=(Token)match(input,27,FOLLOW_27_in_ruleConnection6941); 

                    	        	newLeafNode(otherlv_188, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_6_1_3_2());
                    	        
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2757:1: ( (lv_password_189_0= RULE_STRING ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2758:1: (lv_password_189_0= RULE_STRING )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2758:1: (lv_password_189_0= RULE_STRING )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2759:3: lv_password_189_0= RULE_STRING
                    	    {
                    	    lv_password_189_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConnection6958); 

                    	    			newLeafNode(lv_password_189_0, grammarAccess.getConnectionAccess().getPasswordSTRINGTerminalRuleCall_2_6_1_3_3_0()); 
                    	    		

                    	    	        if (current==null) {
                    	    	            current = createModelElement(grammarAccess.getConnectionRule());
                    	    	        }
                    	           		setWithLastConsumed(
                    	           			current, 
                    	           			"password",
                    	            		lv_password_189_0, 
                    	            		"STRING");
                    	    	    

                    	    }


                    	    }


                    	    }


                    	    }

                    	     
                    	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConnectionAccess().getUnorderedGroup_2_6_1());
                    	    	 				

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 5 :
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2782:4: ({...}? => ( ({...}? => (otherlv_190= ',' otherlv_191= 'URL' otherlv_192= '=' ( (lv_url_193_0= RULE_STRING ) ) ) ) ) )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2782:4: ({...}? => ( ({...}? => (otherlv_190= ',' otherlv_191= 'URL' otherlv_192= '=' ( (lv_url_193_0= RULE_STRING ) ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2783:5: {...}? => ( ({...}? => (otherlv_190= ',' otherlv_191= 'URL' otherlv_192= '=' ( (lv_url_193_0= RULE_STRING ) ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_6_1(), 4) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_6_1(), 4)");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2783:111: ( ({...}? => (otherlv_190= ',' otherlv_191= 'URL' otherlv_192= '=' ( (lv_url_193_0= RULE_STRING ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2784:6: ({...}? => (otherlv_190= ',' otherlv_191= 'URL' otherlv_192= '=' ( (lv_url_193_0= RULE_STRING ) ) ) )
                    	    {
                    	     
                    	    	 				  getUnorderedGroupHelper().select(grammarAccess.getConnectionAccess().getUnorderedGroup_2_6_1(), 4);
                    	    	 				
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2787:6: ({...}? => (otherlv_190= ',' otherlv_191= 'URL' otherlv_192= '=' ( (lv_url_193_0= RULE_STRING ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2787:7: {...}? => (otherlv_190= ',' otherlv_191= 'URL' otherlv_192= '=' ( (lv_url_193_0= RULE_STRING ) ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "true");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2787:16: (otherlv_190= ',' otherlv_191= 'URL' otherlv_192= '=' ( (lv_url_193_0= RULE_STRING ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2787:18: otherlv_190= ',' otherlv_191= 'URL' otherlv_192= '=' ( (lv_url_193_0= RULE_STRING ) )
                    	    {
                    	    otherlv_190=(Token)match(input,28,FOLLOW_28_in_ruleConnection7031); 

                    	        	newLeafNode(otherlv_190, grammarAccess.getConnectionAccess().getCommaKeyword_2_6_1_4_0());
                    	        
                    	    otherlv_191=(Token)match(input,32,FOLLOW_32_in_ruleConnection7043); 

                    	        	newLeafNode(otherlv_191, grammarAccess.getConnectionAccess().getURLKeyword_2_6_1_4_1());
                    	        
                    	    otherlv_192=(Token)match(input,27,FOLLOW_27_in_ruleConnection7055); 

                    	        	newLeafNode(otherlv_192, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_6_1_4_2());
                    	        
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2799:1: ( (lv_url_193_0= RULE_STRING ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2800:1: (lv_url_193_0= RULE_STRING )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2800:1: (lv_url_193_0= RULE_STRING )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2801:3: lv_url_193_0= RULE_STRING
                    	    {
                    	    lv_url_193_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConnection7072); 

                    	    			newLeafNode(lv_url_193_0, grammarAccess.getConnectionAccess().getUrlSTRINGTerminalRuleCall_2_6_1_4_3_0()); 
                    	    		

                    	    	        if (current==null) {
                    	    	            current = createModelElement(grammarAccess.getConnectionRule());
                    	    	        }
                    	           		setWithLastConsumed(
                    	           			current, 
                    	           			"url",
                    	            		lv_url_193_0, 
                    	            		"STRING");
                    	    	    

                    	    }


                    	    }


                    	    }


                    	    }

                    	     
                    	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConnectionAccess().getUnorderedGroup_2_6_1());
                    	    	 				

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 6 :
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2824:4: ({...}? => ( ({...}? => (otherlv_194= ',' otherlv_195= 'Port' otherlv_196= '=' ( (lv_port_197_0= RULE_STRING ) ) ) ) ) )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2824:4: ({...}? => ( ({...}? => (otherlv_194= ',' otherlv_195= 'Port' otherlv_196= '=' ( (lv_port_197_0= RULE_STRING ) ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2825:5: {...}? => ( ({...}? => (otherlv_194= ',' otherlv_195= 'Port' otherlv_196= '=' ( (lv_port_197_0= RULE_STRING ) ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_6_1(), 5) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionAccess().getUnorderedGroup_2_6_1(), 5)");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2825:111: ( ({...}? => (otherlv_194= ',' otherlv_195= 'Port' otherlv_196= '=' ( (lv_port_197_0= RULE_STRING ) ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2826:6: ({...}? => (otherlv_194= ',' otherlv_195= 'Port' otherlv_196= '=' ( (lv_port_197_0= RULE_STRING ) ) ) )
                    	    {
                    	     
                    	    	 				  getUnorderedGroupHelper().select(grammarAccess.getConnectionAccess().getUnorderedGroup_2_6_1(), 5);
                    	    	 				
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2829:6: ({...}? => (otherlv_194= ',' otherlv_195= 'Port' otherlv_196= '=' ( (lv_port_197_0= RULE_STRING ) ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2829:7: {...}? => (otherlv_194= ',' otherlv_195= 'Port' otherlv_196= '=' ( (lv_port_197_0= RULE_STRING ) ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        throw new FailedPredicateException(input, "ruleConnection", "true");
                    	    }
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2829:16: (otherlv_194= ',' otherlv_195= 'Port' otherlv_196= '=' ( (lv_port_197_0= RULE_STRING ) ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2829:18: otherlv_194= ',' otherlv_195= 'Port' otherlv_196= '=' ( (lv_port_197_0= RULE_STRING ) )
                    	    {
                    	    otherlv_194=(Token)match(input,28,FOLLOW_28_in_ruleConnection7145); 

                    	        	newLeafNode(otherlv_194, grammarAccess.getConnectionAccess().getCommaKeyword_2_6_1_5_0());
                    	        
                    	    otherlv_195=(Token)match(input,33,FOLLOW_33_in_ruleConnection7157); 

                    	        	newLeafNode(otherlv_195, grammarAccess.getConnectionAccess().getPortKeyword_2_6_1_5_1());
                    	        
                    	    otherlv_196=(Token)match(input,27,FOLLOW_27_in_ruleConnection7169); 

                    	        	newLeafNode(otherlv_196, grammarAccess.getConnectionAccess().getEqualsSignKeyword_2_6_1_5_2());
                    	        
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2841:1: ( (lv_port_197_0= RULE_STRING ) )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2842:1: (lv_port_197_0= RULE_STRING )
                    	    {
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2842:1: (lv_port_197_0= RULE_STRING )
                    	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2843:3: lv_port_197_0= RULE_STRING
                    	    {
                    	    lv_port_197_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConnection7186); 

                    	    			newLeafNode(lv_port_197_0, grammarAccess.getConnectionAccess().getPortSTRINGTerminalRuleCall_2_6_1_5_3_0()); 
                    	    		

                    	    	        if (current==null) {
                    	    	            current = createModelElement(grammarAccess.getConnectionRule());
                    	    	        }
                    	           		setWithLastConsumed(
                    	           			current, 
                    	           			"port",
                    	            		lv_port_197_0, 
                    	            		"STRING");
                    	    	    

                    	    }


                    	    }


                    	    }


                    	    }

                    	     
                    	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConnectionAccess().getUnorderedGroup_2_6_1());
                    	    	 				

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt20 >= 1 ) break loop20;
                                EarlyExitException eee =
                                    new EarlyExitException(20, input);
                                throw eee;
                        }
                        cnt20++;
                    } while (true);

                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getConnectionAccess().getUnorderedGroup_2_6_1()) ) {
                        throw new FailedPredicateException(input, "ruleConnection", "getUnorderedGroupHelper().canLeave(grammarAccess.getConnectionAccess().getUnorderedGroup_2_6_1())");
                    }

                    }


                    }

                     
                    	  getUnorderedGroupHelper().leave(grammarAccess.getConnectionAccess().getUnorderedGroup_2_6_1());
                    	

                    }


                    }


                    }
                    break;

            }

            otherlv_198=(Token)match(input,35,FOLLOW_35_in_ruleConnection7252); 

                	newLeafNode(otherlv_198, grammarAccess.getConnectionAccess().getRightParenthesisKeyword_3());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleConnection"


    // $ANTLR start "entryRuleDataBase"
    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2886:1: entryRuleDataBase returns [EObject current=null] : iv_ruleDataBase= ruleDataBase EOF ;
    public final EObject entryRuleDataBase() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDataBase = null;


        try {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2887:2: (iv_ruleDataBase= ruleDataBase EOF )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2888:2: iv_ruleDataBase= ruleDataBase EOF
            {
             newCompositeNode(grammarAccess.getDataBaseRule()); 
            pushFollow(FOLLOW_ruleDataBase_in_entryRuleDataBase7288);
            iv_ruleDataBase=ruleDataBase();

            state._fsp--;

             current =iv_ruleDataBase; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleDataBase7298); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDataBase"


    // $ANTLR start "ruleDataBase"
    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2895:1: ruleDataBase returns [EObject current=null] : ( ( (lv_mysql_0_0= 'MySQL' ) ) | ( (lv_sqlserver_1_0= 'SQL Server' ) ) | ( (lv_oracle_2_0= 'Oracle' ) ) ) ;
    public final EObject ruleDataBase() throws RecognitionException {
        EObject current = null;

        Token lv_mysql_0_0=null;
        Token lv_sqlserver_1_0=null;
        Token lv_oracle_2_0=null;

         enterRule(); 
            
        try {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2898:28: ( ( ( (lv_mysql_0_0= 'MySQL' ) ) | ( (lv_sqlserver_1_0= 'SQL Server' ) ) | ( (lv_oracle_2_0= 'Oracle' ) ) ) )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2899:1: ( ( (lv_mysql_0_0= 'MySQL' ) ) | ( (lv_sqlserver_1_0= 'SQL Server' ) ) | ( (lv_oracle_2_0= 'Oracle' ) ) )
            {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2899:1: ( ( (lv_mysql_0_0= 'MySQL' ) ) | ( (lv_sqlserver_1_0= 'SQL Server' ) ) | ( (lv_oracle_2_0= 'Oracle' ) ) )
            int alt22=3;
            switch ( input.LA(1) ) {
            case 36:
                {
                alt22=1;
                }
                break;
            case 37:
                {
                alt22=2;
                }
                break;
            case 38:
                {
                alt22=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 22, 0, input);

                throw nvae;
            }

            switch (alt22) {
                case 1 :
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2899:2: ( (lv_mysql_0_0= 'MySQL' ) )
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2899:2: ( (lv_mysql_0_0= 'MySQL' ) )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2900:1: (lv_mysql_0_0= 'MySQL' )
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2900:1: (lv_mysql_0_0= 'MySQL' )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2901:3: lv_mysql_0_0= 'MySQL'
                    {
                    lv_mysql_0_0=(Token)match(input,36,FOLLOW_36_in_ruleDataBase7341); 

                            newLeafNode(lv_mysql_0_0, grammarAccess.getDataBaseAccess().getMysqlMySQLKeyword_0_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getDataBaseRule());
                    	        }
                           		setWithLastConsumed(current, "mysql", true, "MySQL");
                    	    

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2915:6: ( (lv_sqlserver_1_0= 'SQL Server' ) )
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2915:6: ( (lv_sqlserver_1_0= 'SQL Server' ) )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2916:1: (lv_sqlserver_1_0= 'SQL Server' )
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2916:1: (lv_sqlserver_1_0= 'SQL Server' )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2917:3: lv_sqlserver_1_0= 'SQL Server'
                    {
                    lv_sqlserver_1_0=(Token)match(input,37,FOLLOW_37_in_ruleDataBase7378); 

                            newLeafNode(lv_sqlserver_1_0, grammarAccess.getDataBaseAccess().getSqlserverSQLServerKeyword_1_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getDataBaseRule());
                    	        }
                           		setWithLastConsumed(current, "sqlserver", true, "SQL Server");
                    	    

                    }


                    }


                    }
                    break;
                case 3 :
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2931:6: ( (lv_oracle_2_0= 'Oracle' ) )
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2931:6: ( (lv_oracle_2_0= 'Oracle' ) )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2932:1: (lv_oracle_2_0= 'Oracle' )
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2932:1: (lv_oracle_2_0= 'Oracle' )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2933:3: lv_oracle_2_0= 'Oracle'
                    {
                    lv_oracle_2_0=(Token)match(input,38,FOLLOW_38_in_ruleDataBase7415); 

                            newLeafNode(lv_oracle_2_0, grammarAccess.getDataBaseAccess().getOracleOracleKeyword_2_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getDataBaseRule());
                    	        }
                           		setWithLastConsumed(current, "oracle", true, "Oracle");
                    	    

                    }


                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDataBase"


    // $ANTLR start "entryRuleCreateDAO"
    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2954:1: entryRuleCreateDAO returns [EObject current=null] : iv_ruleCreateDAO= ruleCreateDAO EOF ;
    public final EObject entryRuleCreateDAO() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleCreateDAO = null;


        try {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2955:2: (iv_ruleCreateDAO= ruleCreateDAO EOF )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2956:2: iv_ruleCreateDAO= ruleCreateDAO EOF
            {
             newCompositeNode(grammarAccess.getCreateDAORule()); 
            pushFollow(FOLLOW_ruleCreateDAO_in_entryRuleCreateDAO7464);
            iv_ruleCreateDAO=ruleCreateDAO();

            state._fsp--;

             current =iv_ruleCreateDAO; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleCreateDAO7474); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleCreateDAO"


    // $ANTLR start "ruleCreateDAO"
    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2963:1: ruleCreateDAO returns [EObject current=null] : ( ( (lv_basedao_0_0= 'base-dao' ) )? otherlv_1= 'create-dao' (otherlv_2= 'on-layer' ( (otherlv_3= RULE_ID ) ) )? otherlv_4= '(' ( (otherlv_5= RULE_ID ) ) (otherlv_6= ',' ( (otherlv_7= RULE_ID ) ) )* otherlv_8= ')' ) ;
    public final EObject ruleCreateDAO() throws RecognitionException {
        EObject current = null;

        Token lv_basedao_0_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        Token otherlv_7=null;
        Token otherlv_8=null;

         enterRule(); 
            
        try {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2966:28: ( ( ( (lv_basedao_0_0= 'base-dao' ) )? otherlv_1= 'create-dao' (otherlv_2= 'on-layer' ( (otherlv_3= RULE_ID ) ) )? otherlv_4= '(' ( (otherlv_5= RULE_ID ) ) (otherlv_6= ',' ( (otherlv_7= RULE_ID ) ) )* otherlv_8= ')' ) )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2967:1: ( ( (lv_basedao_0_0= 'base-dao' ) )? otherlv_1= 'create-dao' (otherlv_2= 'on-layer' ( (otherlv_3= RULE_ID ) ) )? otherlv_4= '(' ( (otherlv_5= RULE_ID ) ) (otherlv_6= ',' ( (otherlv_7= RULE_ID ) ) )* otherlv_8= ')' )
            {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2967:1: ( ( (lv_basedao_0_0= 'base-dao' ) )? otherlv_1= 'create-dao' (otherlv_2= 'on-layer' ( (otherlv_3= RULE_ID ) ) )? otherlv_4= '(' ( (otherlv_5= RULE_ID ) ) (otherlv_6= ',' ( (otherlv_7= RULE_ID ) ) )* otherlv_8= ')' )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2967:2: ( (lv_basedao_0_0= 'base-dao' ) )? otherlv_1= 'create-dao' (otherlv_2= 'on-layer' ( (otherlv_3= RULE_ID ) ) )? otherlv_4= '(' ( (otherlv_5= RULE_ID ) ) (otherlv_6= ',' ( (otherlv_7= RULE_ID ) ) )* otherlv_8= ')'
            {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2967:2: ( (lv_basedao_0_0= 'base-dao' ) )?
            int alt23=2;
            int LA23_0 = input.LA(1);

            if ( (LA23_0==39) ) {
                alt23=1;
            }
            switch (alt23) {
                case 1 :
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2968:1: (lv_basedao_0_0= 'base-dao' )
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2968:1: (lv_basedao_0_0= 'base-dao' )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2969:3: lv_basedao_0_0= 'base-dao'
                    {
                    lv_basedao_0_0=(Token)match(input,39,FOLLOW_39_in_ruleCreateDAO7517); 

                            newLeafNode(lv_basedao_0_0, grammarAccess.getCreateDAOAccess().getBasedaoBaseDaoKeyword_0_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getCreateDAORule());
                    	        }
                           		setWithLastConsumed(current, "basedao", true, "base-dao");
                    	    

                    }


                    }
                    break;

            }

            otherlv_1=(Token)match(input,40,FOLLOW_40_in_ruleCreateDAO7543); 

                	newLeafNode(otherlv_1, grammarAccess.getCreateDAOAccess().getCreateDaoKeyword_1());
                
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2986:1: (otherlv_2= 'on-layer' ( (otherlv_3= RULE_ID ) ) )?
            int alt24=2;
            int LA24_0 = input.LA(1);

            if ( (LA24_0==41) ) {
                alt24=1;
            }
            switch (alt24) {
                case 1 :
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2986:3: otherlv_2= 'on-layer' ( (otherlv_3= RULE_ID ) )
                    {
                    otherlv_2=(Token)match(input,41,FOLLOW_41_in_ruleCreateDAO7556); 

                        	newLeafNode(otherlv_2, grammarAccess.getCreateDAOAccess().getOnLayerKeyword_2_0());
                        
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2990:1: ( (otherlv_3= RULE_ID ) )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2991:1: (otherlv_3= RULE_ID )
                    {
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2991:1: (otherlv_3= RULE_ID )
                    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:2992:3: otherlv_3= RULE_ID
                    {

                    			if (current==null) {
                    	            current = createModelElement(grammarAccess.getCreateDAORule());
                    	        }
                            
                    otherlv_3=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleCreateDAO7576); 

                    		newLeafNode(otherlv_3, grammarAccess.getCreateDAOAccess().getDaolayerLayerCrossReference_2_1_0()); 
                    	

                    }


                    }


                    }
                    break;

            }

            otherlv_4=(Token)match(input,25,FOLLOW_25_in_ruleCreateDAO7590); 

                	newLeafNode(otherlv_4, grammarAccess.getCreateDAOAccess().getLeftParenthesisKeyword_3());
                
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:3007:1: ( (otherlv_5= RULE_ID ) )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:3008:1: (otherlv_5= RULE_ID )
            {
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:3008:1: (otherlv_5= RULE_ID )
            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:3009:3: otherlv_5= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getCreateDAORule());
            	        }
                    
            otherlv_5=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleCreateDAO7610); 

            		newLeafNode(otherlv_5, grammarAccess.getCreateDAOAccess().getFirstEntityEntityCrossReference_4_0()); 
            	

            }


            }

            // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:3020:2: (otherlv_6= ',' ( (otherlv_7= RULE_ID ) ) )*
            loop25:
            do {
                int alt25=2;
                int LA25_0 = input.LA(1);

                if ( (LA25_0==28) ) {
                    alt25=1;
                }


                switch (alt25) {
            	case 1 :
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:3020:4: otherlv_6= ',' ( (otherlv_7= RULE_ID ) )
            	    {
            	    otherlv_6=(Token)match(input,28,FOLLOW_28_in_ruleCreateDAO7623); 

            	        	newLeafNode(otherlv_6, grammarAccess.getCreateDAOAccess().getCommaKeyword_5_0());
            	        
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:3024:1: ( (otherlv_7= RULE_ID ) )
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:3025:1: (otherlv_7= RULE_ID )
            	    {
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:3025:1: (otherlv_7= RULE_ID )
            	    // ../org.xtext.ic.dsl/src-gen/org/xtext/ic/dsl/parser/antlr/internal/InternalIcDsl.g:3026:3: otherlv_7= RULE_ID
            	    {

            	    			if (current==null) {
            	    	            current = createModelElement(grammarAccess.getCreateDAORule());
            	    	        }
            	            
            	    otherlv_7=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleCreateDAO7643); 

            	    		newLeafNode(otherlv_7, grammarAccess.getCreateDAOAccess().getEntitiesEntityCrossReference_5_1_0()); 
            	    	

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop25;
                }
            } while (true);

            otherlv_8=(Token)match(input,35,FOLLOW_35_in_ruleCreateDAO7657); 

                	newLeafNode(otherlv_8, grammarAccess.getCreateDAOAccess().getRightParenthesisKeyword_6());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleCreateDAO"

    // Delegated rules


 

    public static final BitSet FOLLOW_ruleModel_in_entryRuleModel75 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleModel85 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePackagePrefix_in_ruleModel131 = new BitSet(new long[]{0x0000018001049002L});
    public static final BitSet FOLLOW_ruleConnection_in_ruleModel198 = new BitSet(new long[]{0x0000018001049002L});
    public static final BitSet FOLLOW_ruleCreateDAO_in_ruleModel273 = new BitSet(new long[]{0x0000018001049002L});
    public static final BitSet FOLLOW_ruleType_in_ruleModel334 = new BitSet(new long[]{0x0000000000049002L});
    public static final BitSet FOLLOW_rulePackagePrefix_in_entryRulePackagePrefix371 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePackagePrefix381 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_11_in_rulePackagePrefix418 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleJAVAID_in_rulePackagePrefix439 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleType_in_entryRuleType475 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleType485 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLayer_in_ruleType532 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTypeDef_in_ruleType559 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleEntity_in_ruleType586 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLayer_in_entryRuleLayer621 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleLayer631 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_12_in_ruleLayer668 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleLayer685 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_ruleLayer702 = new BitSet(new long[]{0x000001800104D000L});
    public static final BitSet FOLLOW_ruleConnection_in_ruleLayer768 = new BitSet(new long[]{0x000001800104D000L});
    public static final BitSet FOLLOW_ruleCreateDAO_in_ruleLayer843 = new BitSet(new long[]{0x000001800104D000L});
    public static final BitSet FOLLOW_ruleType_in_ruleLayer904 = new BitSet(new long[]{0x000000000004D000L});
    public static final BitSet FOLLOW_14_in_ruleLayer917 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTypeDef_in_entryRuleTypeDef953 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTypeDef963 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_15_in_ruleTypeDef1000 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleTypeDef1017 = new BitSet(new long[]{0x0000000000010002L});
    public static final BitSet FOLLOW_16_in_ruleTypeDef1035 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleJAVAID_in_ruleTypeDef1056 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJAVAID_in_entryRuleJAVAID1095 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleJAVAID1106 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleJAVAID1146 = new BitSet(new long[]{0x0000000000020002L});
    public static final BitSet FOLLOW_17_in_ruleJAVAID1165 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleJAVAID1180 = new BitSet(new long[]{0x0000000000020002L});
    public static final BitSet FOLLOW_ruleEntity_in_entryRuleEntity1227 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleEntity1237 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_18_in_ruleEntity1274 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleEntity1291 = new BitSet(new long[]{0x0000000000082000L});
    public static final BitSet FOLLOW_19_in_ruleEntity1309 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleEntity1329 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_ruleEntity1343 = new BitSet(new long[]{0x0000000000304010L});
    public static final BitSet FOLLOW_ruleAttribute_in_ruleEntity1364 = new BitSet(new long[]{0x0000000000304010L});
    public static final BitSet FOLLOW_14_in_ruleEntity1377 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAttribute_in_entryRuleAttribute1413 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAttribute1423 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_20_in_ruleAttribute1467 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_21_in_ruleAttribute1504 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleAttribute1539 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleAttribute1556 = new BitSet(new long[]{0x0000000000400002L});
    public static final BitSet FOLLOW_ruleFlags_in_ruleAttribute1582 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFlags_in_entryRuleFlags1619 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleFlags1629 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_22_in_ruleFlags1672 = new BitSet(new long[]{0x0000000000800002L});
    public static final BitSet FOLLOW_23_in_ruleFlags1703 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleConnection_in_entryRuleConnection1753 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleConnection1763 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_24_in_ruleConnection1800 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_ruleConnection1812 = new BitSet(new long[]{0x00000007E4000000L});
    public static final BitSet FOLLOW_26_in_ruleConnection1827 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection1839 = new BitSet(new long[]{0x0000007000000000L});
    public static final BitSet FOLLOW_ruleDataBase_in_ruleConnection1860 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_ruleConnection1919 = new BitSet(new long[]{0x0000000020000000L});
    public static final BitSet FOLLOW_29_in_ruleConnection1931 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection1943 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConnection1960 = new BitSet(new long[]{0x0000000810000000L});
    public static final BitSet FOLLOW_28_in_ruleConnection2033 = new BitSet(new long[]{0x0000000040000000L});
    public static final BitSet FOLLOW_30_in_ruleConnection2045 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection2057 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConnection2074 = new BitSet(new long[]{0x0000000810000000L});
    public static final BitSet FOLLOW_28_in_ruleConnection2147 = new BitSet(new long[]{0x0000000080000000L});
    public static final BitSet FOLLOW_31_in_ruleConnection2159 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection2171 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConnection2188 = new BitSet(new long[]{0x0000000810000000L});
    public static final BitSet FOLLOW_28_in_ruleConnection2261 = new BitSet(new long[]{0x0000000100000000L});
    public static final BitSet FOLLOW_32_in_ruleConnection2273 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection2285 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConnection2302 = new BitSet(new long[]{0x0000000810000000L});
    public static final BitSet FOLLOW_28_in_ruleConnection2375 = new BitSet(new long[]{0x0000000200000000L});
    public static final BitSet FOLLOW_33_in_ruleConnection2387 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection2399 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConnection2416 = new BitSet(new long[]{0x0000000810000000L});
    public static final BitSet FOLLOW_28_in_ruleConnection2489 = new BitSet(new long[]{0x0000000400000000L});
    public static final BitSet FOLLOW_34_in_ruleConnection2501 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection2513 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConnection2530 = new BitSet(new long[]{0x0000000810000000L});
    public static final BitSet FOLLOW_29_in_ruleConnection2603 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection2615 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConnection2632 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_ruleConnection2696 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_26_in_ruleConnection2708 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection2720 = new BitSet(new long[]{0x0000007000000000L});
    public static final BitSet FOLLOW_ruleDataBase_in_ruleConnection2741 = new BitSet(new long[]{0x0000000810000000L});
    public static final BitSet FOLLOW_28_in_ruleConnection2809 = new BitSet(new long[]{0x0000000040000000L});
    public static final BitSet FOLLOW_30_in_ruleConnection2821 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection2833 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConnection2850 = new BitSet(new long[]{0x0000000810000000L});
    public static final BitSet FOLLOW_28_in_ruleConnection2923 = new BitSet(new long[]{0x0000000080000000L});
    public static final BitSet FOLLOW_31_in_ruleConnection2935 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection2947 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConnection2964 = new BitSet(new long[]{0x0000000810000000L});
    public static final BitSet FOLLOW_28_in_ruleConnection3037 = new BitSet(new long[]{0x0000000100000000L});
    public static final BitSet FOLLOW_32_in_ruleConnection3049 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection3061 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConnection3078 = new BitSet(new long[]{0x0000000810000000L});
    public static final BitSet FOLLOW_28_in_ruleConnection3151 = new BitSet(new long[]{0x0000000200000000L});
    public static final BitSet FOLLOW_33_in_ruleConnection3163 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection3175 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConnection3192 = new BitSet(new long[]{0x0000000810000000L});
    public static final BitSet FOLLOW_28_in_ruleConnection3265 = new BitSet(new long[]{0x0000000400000000L});
    public static final BitSet FOLLOW_34_in_ruleConnection3277 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection3289 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConnection3306 = new BitSet(new long[]{0x0000000810000000L});
    public static final BitSet FOLLOW_30_in_ruleConnection3379 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection3391 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConnection3408 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_ruleConnection3472 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_26_in_ruleConnection3484 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection3496 = new BitSet(new long[]{0x0000007000000000L});
    public static final BitSet FOLLOW_ruleDataBase_in_ruleConnection3517 = new BitSet(new long[]{0x0000000810000000L});
    public static final BitSet FOLLOW_28_in_ruleConnection3585 = new BitSet(new long[]{0x0000000020000000L});
    public static final BitSet FOLLOW_29_in_ruleConnection3597 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection3609 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConnection3626 = new BitSet(new long[]{0x0000000810000000L});
    public static final BitSet FOLLOW_28_in_ruleConnection3699 = new BitSet(new long[]{0x0000000080000000L});
    public static final BitSet FOLLOW_31_in_ruleConnection3711 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection3723 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConnection3740 = new BitSet(new long[]{0x0000000810000000L});
    public static final BitSet FOLLOW_28_in_ruleConnection3813 = new BitSet(new long[]{0x0000000100000000L});
    public static final BitSet FOLLOW_32_in_ruleConnection3825 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection3837 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConnection3854 = new BitSet(new long[]{0x0000000810000000L});
    public static final BitSet FOLLOW_28_in_ruleConnection3927 = new BitSet(new long[]{0x0000000200000000L});
    public static final BitSet FOLLOW_33_in_ruleConnection3939 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection3951 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConnection3968 = new BitSet(new long[]{0x0000000810000000L});
    public static final BitSet FOLLOW_28_in_ruleConnection4041 = new BitSet(new long[]{0x0000000400000000L});
    public static final BitSet FOLLOW_34_in_ruleConnection4053 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection4065 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConnection4082 = new BitSet(new long[]{0x0000000810000000L});
    public static final BitSet FOLLOW_31_in_ruleConnection4155 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection4167 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConnection4184 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_ruleConnection4248 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_26_in_ruleConnection4260 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection4272 = new BitSet(new long[]{0x0000007000000000L});
    public static final BitSet FOLLOW_ruleDataBase_in_ruleConnection4293 = new BitSet(new long[]{0x0000000810000000L});
    public static final BitSet FOLLOW_28_in_ruleConnection4361 = new BitSet(new long[]{0x0000000020000000L});
    public static final BitSet FOLLOW_29_in_ruleConnection4373 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection4385 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConnection4402 = new BitSet(new long[]{0x0000000810000000L});
    public static final BitSet FOLLOW_28_in_ruleConnection4475 = new BitSet(new long[]{0x0000000040000000L});
    public static final BitSet FOLLOW_30_in_ruleConnection4487 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection4499 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConnection4516 = new BitSet(new long[]{0x0000000810000000L});
    public static final BitSet FOLLOW_28_in_ruleConnection4589 = new BitSet(new long[]{0x0000000100000000L});
    public static final BitSet FOLLOW_32_in_ruleConnection4601 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection4613 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConnection4630 = new BitSet(new long[]{0x0000000810000000L});
    public static final BitSet FOLLOW_28_in_ruleConnection4703 = new BitSet(new long[]{0x0000000200000000L});
    public static final BitSet FOLLOW_33_in_ruleConnection4715 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection4727 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConnection4744 = new BitSet(new long[]{0x0000000810000000L});
    public static final BitSet FOLLOW_28_in_ruleConnection4817 = new BitSet(new long[]{0x0000000400000000L});
    public static final BitSet FOLLOW_34_in_ruleConnection4829 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection4841 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConnection4858 = new BitSet(new long[]{0x0000000810000000L});
    public static final BitSet FOLLOW_32_in_ruleConnection4931 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection4943 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConnection4960 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_ruleConnection5024 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_26_in_ruleConnection5036 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection5048 = new BitSet(new long[]{0x0000007000000000L});
    public static final BitSet FOLLOW_ruleDataBase_in_ruleConnection5069 = new BitSet(new long[]{0x0000000810000000L});
    public static final BitSet FOLLOW_28_in_ruleConnection5137 = new BitSet(new long[]{0x0000000020000000L});
    public static final BitSet FOLLOW_29_in_ruleConnection5149 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection5161 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConnection5178 = new BitSet(new long[]{0x0000000810000000L});
    public static final BitSet FOLLOW_28_in_ruleConnection5251 = new BitSet(new long[]{0x0000000040000000L});
    public static final BitSet FOLLOW_30_in_ruleConnection5263 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection5275 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConnection5292 = new BitSet(new long[]{0x0000000810000000L});
    public static final BitSet FOLLOW_28_in_ruleConnection5365 = new BitSet(new long[]{0x0000000080000000L});
    public static final BitSet FOLLOW_31_in_ruleConnection5377 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection5389 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConnection5406 = new BitSet(new long[]{0x0000000810000000L});
    public static final BitSet FOLLOW_28_in_ruleConnection5479 = new BitSet(new long[]{0x0000000200000000L});
    public static final BitSet FOLLOW_33_in_ruleConnection5491 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection5503 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConnection5520 = new BitSet(new long[]{0x0000000810000000L});
    public static final BitSet FOLLOW_28_in_ruleConnection5593 = new BitSet(new long[]{0x0000000400000000L});
    public static final BitSet FOLLOW_34_in_ruleConnection5605 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection5617 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConnection5634 = new BitSet(new long[]{0x0000000810000000L});
    public static final BitSet FOLLOW_33_in_ruleConnection5707 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection5719 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConnection5736 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_ruleConnection5800 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_26_in_ruleConnection5812 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection5824 = new BitSet(new long[]{0x0000007000000000L});
    public static final BitSet FOLLOW_ruleDataBase_in_ruleConnection5845 = new BitSet(new long[]{0x0000000810000000L});
    public static final BitSet FOLLOW_28_in_ruleConnection5913 = new BitSet(new long[]{0x0000000020000000L});
    public static final BitSet FOLLOW_29_in_ruleConnection5925 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection5937 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConnection5954 = new BitSet(new long[]{0x0000000810000000L});
    public static final BitSet FOLLOW_28_in_ruleConnection6027 = new BitSet(new long[]{0x0000000040000000L});
    public static final BitSet FOLLOW_30_in_ruleConnection6039 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection6051 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConnection6068 = new BitSet(new long[]{0x0000000810000000L});
    public static final BitSet FOLLOW_28_in_ruleConnection6141 = new BitSet(new long[]{0x0000000080000000L});
    public static final BitSet FOLLOW_31_in_ruleConnection6153 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection6165 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConnection6182 = new BitSet(new long[]{0x0000000810000000L});
    public static final BitSet FOLLOW_28_in_ruleConnection6255 = new BitSet(new long[]{0x0000000100000000L});
    public static final BitSet FOLLOW_32_in_ruleConnection6267 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection6279 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConnection6296 = new BitSet(new long[]{0x0000000810000000L});
    public static final BitSet FOLLOW_28_in_ruleConnection6369 = new BitSet(new long[]{0x0000000400000000L});
    public static final BitSet FOLLOW_34_in_ruleConnection6381 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection6393 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConnection6410 = new BitSet(new long[]{0x0000000810000000L});
    public static final BitSet FOLLOW_34_in_ruleConnection6483 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection6495 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConnection6512 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_ruleConnection6576 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_26_in_ruleConnection6588 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection6600 = new BitSet(new long[]{0x0000007000000000L});
    public static final BitSet FOLLOW_ruleDataBase_in_ruleConnection6621 = new BitSet(new long[]{0x0000000810000000L});
    public static final BitSet FOLLOW_28_in_ruleConnection6689 = new BitSet(new long[]{0x0000000020000000L});
    public static final BitSet FOLLOW_29_in_ruleConnection6701 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection6713 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConnection6730 = new BitSet(new long[]{0x0000000810000000L});
    public static final BitSet FOLLOW_28_in_ruleConnection6803 = new BitSet(new long[]{0x0000000040000000L});
    public static final BitSet FOLLOW_30_in_ruleConnection6815 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection6827 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConnection6844 = new BitSet(new long[]{0x0000000810000000L});
    public static final BitSet FOLLOW_28_in_ruleConnection6917 = new BitSet(new long[]{0x0000000080000000L});
    public static final BitSet FOLLOW_31_in_ruleConnection6929 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection6941 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConnection6958 = new BitSet(new long[]{0x0000000810000000L});
    public static final BitSet FOLLOW_28_in_ruleConnection7031 = new BitSet(new long[]{0x0000000100000000L});
    public static final BitSet FOLLOW_32_in_ruleConnection7043 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection7055 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConnection7072 = new BitSet(new long[]{0x0000000810000000L});
    public static final BitSet FOLLOW_28_in_ruleConnection7145 = new BitSet(new long[]{0x0000000200000000L});
    public static final BitSet FOLLOW_33_in_ruleConnection7157 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleConnection7169 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConnection7186 = new BitSet(new long[]{0x0000000810000000L});
    public static final BitSet FOLLOW_35_in_ruleConnection7252 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDataBase_in_entryRuleDataBase7288 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDataBase7298 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_36_in_ruleDataBase7341 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_37_in_ruleDataBase7378 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_38_in_ruleDataBase7415 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCreateDAO_in_entryRuleCreateDAO7464 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleCreateDAO7474 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_39_in_ruleCreateDAO7517 = new BitSet(new long[]{0x0000010000000000L});
    public static final BitSet FOLLOW_40_in_ruleCreateDAO7543 = new BitSet(new long[]{0x0000020002000000L});
    public static final BitSet FOLLOW_41_in_ruleCreateDAO7556 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleCreateDAO7576 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_ruleCreateDAO7590 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleCreateDAO7610 = new BitSet(new long[]{0x0000000810000000L});
    public static final BitSet FOLLOW_28_in_ruleCreateDAO7623 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleCreateDAO7643 = new BitSet(new long[]{0x0000000810000000L});
    public static final BitSet FOLLOW_35_in_ruleCreateDAO7657 = new BitSet(new long[]{0x0000000000000002L});

}
